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");
    }
    }
    }
    }
    }

      

  • 相关阅读:
    CSS中float与A标签的疑问
    常用的Css命名方式
    div css 盒子模型
    HTML初级教程 表单form
    Redis学习记录(二)
    Redis学习记录(一)
    Java源码——HashMap的源码分析及原理学习记录
    java编程基础——从上往下打印二叉树
    java编程基础——栈压入和弹出序列
    java基础编程——获取栈中的最小元素
  • 原文地址:https://www.cnblogs.com/tanlon/p/2169302.html
Copyright © 2011-2022 走看看