ããã«ã¡ã¯ã岩äºãšç³ããŸãã
onScanCompleted()ãåŒã³åºãããªããšããã®ã¯è¬ã§ãããscanFile(Filename, MimeType)ãåŒã¶éã«
ããæ¡åŒµåãããæãã
ããMimeTypeãã¡ãããšæå®ããã
ã®ãããããæºãããŠããªããšã¹ãã£ã³ã«å€±æããã£ãœãã§ããã
ç§ã®ç°å¢(Android1.6+ãšãã¥ã¬ãŒã¿ and Android2.1+HTC Desire)ã§ã¯ãäžèšã®ã³ãŒãã§åäœããŸããã
public class ã¢ã¯ãã£ãã㣠{
public void é©åœãªã€ãã³ããªã¹ã() {
MediaScannerConnection scanner = new
MediaScannerConnection(getApplicationContext(), client);
MyClient client = new MyClient();
client.setScanner(scanner);
scanner.connect();
}
class MyClient implements
MediaScannerConnection.MediaScannerConnectionClient {
private MediaScannerConnection _scanner = null;
public void setScanner(MediaScannerConnection scanner)
{ _scanner = scanner; }
public void onMediaScannerConnected() { _scanner.scanFile("/
sdcard/sample.png", null); }
public void onScanCompleted(String path, Uri uri) {
_scanner.disconnect();
// pathã¯ã"/sdcard/sample.png"ã£ãŠãªæã
// uriã¯ã"content://media/external/images/media/117"ã£ãŠãªæã
try { Bitmap bitmap =
MediaStore.Images.Media.getBitmap(getContentResolver(), uri); } catch
(Exception ignore) { }
}
}
}
ãŸããååã§ç»åãæ€çŽ¢ããŠè¡šç€ºãããšãã£ãèŠä»¶ãæºããã«ã¯ããã¡ã€ã«ã¹ãã£ã³å®äºã€ãã³ãã§é§åããããã
ContentResolverã䜿çšããŠã¡ãã£ã¢ã®ããŒã¿ããŒã¹ã«åãåãããã»ããã«ãã³ã€ã€æ°ãããŸãã
ïŒä»¥äžã«ããµã³ãã«ãæžããŠã¿ãŸããïŒ
// ãã¡ã€ã«åã«"sample"ãå«ãç»åãã¡ã€ã«ãæ€çŽ¢ãããã¡ã€ã«åãšãã¹ãååŸãã
Cursor cursor = getContentResolver().query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
new String[] { MediaStore.Images.Media.DISPLAY_NAME,
MediaStore.Images.Media.DATA },
MediaStore.Images.Media.DISPLAY_NAME + " like ?",
new String[] { "%sample%" },
null);
while (cursor.moveToNext())
{
String filename =
cursor.getString( cursor.getColumnIndex( MediaStore.Images.Media.DISPLAY_NAME ) );
String filepath =
cursor.getString( cursor.getColumnIndex( MediaStore.Images.Media.DATA ) );
Bitmap bitmap = BitmapFactory.decodeFile(filepath);
// ãªã©ãªã©
}
以äžãè足ã§ãã
MediaScannerãªããŠã®ã¯åããŠèŠãã®ã§ã調ã¹ãç¯å²ã§ãŸãšããŠã¿ãŸããã
(1)Media Scanner Serviceãšã¯
端æ«ã®å
éš/å€éšã¹ãã¬ãŒãžã«æ ŒçŽãããŠããåçš®ã¡ãã£ã¢ãã¡ã€ã«ã®æ
å ±ãéçŽãããŒã¿ããŒã¹åããŠãããµãŒãã¹ã§ãããïŒãã¶ãâŠïŒ
(2)MediaScannerConnectionãšã¯
æ°ãã«äœæorããŠã³ããŒãããã¡ãã£ã¢ãã¡ã€ã«ãããMediaScannerãµãŒãã¹ãã«ç»é²ããæ段ãæäŸããããã®ã¯ã©ã¹ã§ããã
(åæ:MediaScannerConnection provides a way for applications to pass a
newly created or downloaded media file to the media scanner service.)
(3)MediaScannerConnectionClientãšã¯
MediaScannerConnectionãå©çšããã¢ããªã±ãŒã·ã§ã³ã«å¯Ÿããäžèšã®ã¿ã€ãã³ã°ã§ãã®æšãéç¥ããããã®ã€ã³ã¿ãŒãã§ãŒã¹ãå®çŸ©ã
ãã¯ã©ã¹ã§ããã
ãã»ãMediaScannerãµãŒãã¹ããžã®æ¥ç¶ãã§ãã
ãã»ãã¡ã€ã«ã®ã¹ãã£ã³ãã³ã°ãå®äºãã
(åæ:An interface for notifying clients of MediaScannerConnection when
a connection to the MediaScanner service has been established and when
the scanning of a file has completed.)
åèïŒ
http://code.google.com/p/i-jetty/source/browse/trunk/webapps/console/src/main/java/org/mortbay/ijetty/console/MediaBrowserServlet.java?spec=svn360&r=360
http://d.hatena.ne.jp/umezo/20100608/1276014215
http://android-dev.g.hatena.ne.jp/sakira09/