zoukankan      html  css  js  c++  java
  • [原]Android 手动扫描音乐文件

    最近做一个关于手动扫描指定文件夹下面的媒体文件到系统媒体数据库中的功能,在网上找了很多大多都是发送一个广播:

    sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));

      通知系统媒体自动扫描,不知道是因为权限的问题还是什么原因,反正试了n久就是没用,就是扫描不到系统数据库中去。

         于是自己去弄了一个方法,实现了功能,方法如下:

    //实例化一个MediaScannerConnection
    MediaScannerConnection mediaScannerConnection=new MediaScannerConnection(ESearchManager.this, client);
    //获取连接
    mediaScannerConnection.connect();
    //扫描指定路径下的文件到系统数据库中
    scanfile(
    new File(path));
    //实例化MediaScannerConnectionClient接口
    MediaScannerConnectionClient client
    =new MediaScannerConnectionClient() {

    public void onScanCompleted(String path, Uri uri) {
    // TODO Auto-generated method stub
    mediaScannerConnection.disconnect();
    Log.d(
    "tag", "onScanCompleted");
    }

    public void onMediaScannerConnected() {
    // TODO Auto-generated method stub
    Log.d("tag", "onMediaScannerConnected");
    }
    };
    //将指定路径下的文件列出来,更新到媒体数据库
    private void scanfile(File f){
    if(f.isDirectory()){
    File[] files
    =f.listFiles();//将指定文件夹下面的文件全部列出来
    if(files!=null){
    for(int i=0;i<files.length;i++){
    if(files[i].isDirectory())
    scanfile(files[i]);
    else
    {
    //调用
    mediaScannerConnection.scanFile()方法,更新指定类型的文件到数据库中
                  mediaScannerConnection.scanFile(files[i].getAbsolutePath(), "audio/mpeg");
    }
    }
    }
    }
    }

      

  • 相关阅读:
    梦心日记本V2.0终于要完工了
    上班半年大总结
    真有趣
    搞定设计模式1之策略模式
    利用GDI+制作背景颜色淡入淡出效果的按钮
    浏览器之争
    学习自定义控件
    搞定设计模式2之代理模式
    (转)学习asp.net比较完整的流程
    搞定设计模式3之中介者模式
  • 原文地址:https://www.cnblogs.com/tanlon/p/2169302.html
Copyright © 2011-2022 走看看