MediaScannerClient.cpp revision 544ad2be674423238c47650d2c8588ba7dfc9ed2
1413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber/*
2413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber * Copyright (C) 2009 The Android Open Source Project
3413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber *
4413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber * Licensed under the Apache License, Version 2.0 (the "License");
5413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber * you may not use this file except in compliance with the License.
6413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber * You may obtain a copy of the License at
7413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber *
8413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber *      http://www.apache.org/licenses/LICENSE-2.0
9413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber *
10413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber * Unless required by applicable law or agreed to in writing, software
11413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber * distributed under the License is distributed on an "AS IS" BASIS,
12413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber * See the License for the specific language governing permissions and
14413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber * limitations under the License.
15413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber */
16413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber
17544ad2be674423238c47650d2c8588ba7dfc9ed2Marco Nelissen//#define LOG_NDEBUG 0
18544ad2be674423238c47650d2c8588ba7dfc9ed2Marco Nelissen#define LOG_TAG "MediaScannerClient"
19544ad2be674423238c47650d2c8588ba7dfc9ed2Marco Nelissen#include <utils/Log.h>
20544ad2be674423238c47650d2c8588ba7dfc9ed2Marco Nelissen
21413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber#include <media/mediascanner.h>
22413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber
23544ad2be674423238c47650d2c8588ba7dfc9ed2Marco Nelissen#include "CharacterEncodingDetector.h"
241f7d356fa094b975ad2ebf9217be6abba2c70825Mathias Agopian#include "StringArray.h"
25413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber
26413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Hubernamespace android {
27413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber
28413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas HuberMediaScannerClient::MediaScannerClient()
29544ad2be674423238c47650d2c8588ba7dfc9ed2Marco Nelissen    :   mEncodingDetector(NULL)
30413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber{
31413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber}
32413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber
33413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas HuberMediaScannerClient::~MediaScannerClient()
34413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber{
35544ad2be674423238c47650d2c8588ba7dfc9ed2Marco Nelissen    delete mEncodingDetector;
36413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber}
37413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber
38413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Hubervoid MediaScannerClient::setLocale(const char* locale)
39413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber{
40544ad2be674423238c47650d2c8588ba7dfc9ed2Marco Nelissen    mLocale = locale; // not currently used
41413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber}
42413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber
43413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Hubervoid MediaScannerClient::beginFile()
44413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber{
45544ad2be674423238c47650d2c8588ba7dfc9ed2Marco Nelissen    delete mEncodingDetector;
46544ad2be674423238c47650d2c8588ba7dfc9ed2Marco Nelissen    mEncodingDetector = new CharacterEncodingDetector();
47413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber}
48413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber
497188e55f54a43c55fd6b96454720c447f1dc454eJeff Brownstatus_t MediaScannerClient::addStringTag(const char* name, const char* value)
50413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber{
51544ad2be674423238c47650d2c8588ba7dfc9ed2Marco Nelissen    mEncodingDetector->addTag(name, value);
52544ad2be674423238c47650d2c8588ba7dfc9ed2Marco Nelissen    return OK;
53413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber}
54413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber
55413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Hubervoid MediaScannerClient::endFile()
56413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber{
57544ad2be674423238c47650d2c8588ba7dfc9ed2Marco Nelissen    mEncodingDetector->detectAndConvert();
58544ad2be674423238c47650d2c8588ba7dfc9ed2Marco Nelissen
59544ad2be674423238c47650d2c8588ba7dfc9ed2Marco Nelissen    int size = mEncodingDetector->size();
60544ad2be674423238c47650d2c8588ba7dfc9ed2Marco Nelissen    if (size) {
61544ad2be674423238c47650d2c8588ba7dfc9ed2Marco Nelissen        for (int i = 0; i < size; i++) {
62544ad2be674423238c47650d2c8588ba7dfc9ed2Marco Nelissen            const char *name;
63544ad2be674423238c47650d2c8588ba7dfc9ed2Marco Nelissen            const char *value;
64544ad2be674423238c47650d2c8588ba7dfc9ed2Marco Nelissen            mEncodingDetector->getTag(i, &name, &value);
65544ad2be674423238c47650d2c8588ba7dfc9ed2Marco Nelissen            handleStringTag(name, value);
66b5c3107262fdf82aef4bd5ee8b8c60dd3e4725feMarco Nelissen        }
67413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    }
68413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber}
69413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber
70413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber}  // namespace android
71