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