zoukankan      html  css  js  c++  java
  • Android多媒体框架对音乐播放器的支持

    下面介绍一下Andriod多媒体框架对开发者提供的支持有哪些。
                  1. MediaScannerReceiver
                      这个广播接收者在接收到ACTION_BOOT_COMPLETED、ACTION_MEDIA_MOUNTED或 ACTION_MEDIA_SCANNER_SCAN_FILE 广播时对SD卡中的图片、音乐和视频文件进行了扫描,因为扫描不能影响用户使用,这里启动了一个服务MediaScannerService,扫描的文件类型如下:
     
    /* Audio */ 
                addFileType("MP3", FILE_TYPE_MP3, "audio/mpeg"); 
                addFileType("M4A", FILE_TYPE_M4A, "audio/mp4"); 
                addFileType("WAV", FILE_TYPE_WAV, "audio/x-wav"); 
                addFileType("AMR", FILE_TYPE_AMR, "audio/amr"); 
                addFileType("AWB", FILE_TYPE_AWB, "audio/amr-wb"); 
                addFileType("WMA", FILE_TYPE_WMA, "audio/x-ms-wma"); 
                addFileType("OGG", FILE_TYPE_OGG, "application/ogg"); 
                addFileType("MID", FILE_TYPE_MID, "audio/midi"); 
                addFileType("XMF", FILE_TYPE_MID, "audio/midi"); 
                addFileType("RTTTL", FILE_TYPE_MID, "audio/midi"); 
                addFileType("SMF", FILE_TYPE_SMF, "audio/sp-midi"); 
                addFileType("IMY", FILE_TYPE_IMY, "audio/imelody"); 
     /* Video */             addFileType("MP4", FILE_TYPE_MP4, "video/mp4"); 
                addFileType("M4V", FILE_TYPE_M4V, "video/mp4"); 
                addFileType("3GP", FILE_TYPE_3GPP, "video/3gpp"); 
                addFileType("3GPP", FILE_TYPE_3GPP, "video/3gpp"); 
                addFileType("3G2", FILE_TYPE_3GPP2, "video/3gpp2"); 
                addFileType("3GPP2", FILE_TYPE_3GPP2, "video/3gpp2"); 
                addFileType("WMV", FILE_TYPE_WMV, "video/x-ms-wmv"); 
                
    /* Image */ 
                addFileType("JPG", FILE_TYPE_JPEG, "image/jpeg"); 
                addFileType("JPEG", FILE_TYPE_JPEG, "image/jpeg"); 
                addFileType("GIF", FILE_TYPE_GIF, "image/gif"); 
                addFileType("PNG", FILE_TYPE_PNG, "image/png"); 
                addFileType("BMP", FILE_TYPE_BMP, "image/x-ms-bmp"); 
                addFileType("WBMP", FILE_TYPE_WBMP, "image/vnd.wap.wbmp"); 
                
    /* Audio Play List */ 
                addFileType("M3U", FILE_TYPE_M3U, "audio/x-mpegurl"); 
                addFileType("PLS", FILE_TYPE_PLS, "audio/x-scpls"); 
                addFileType("WPL", FILE_TYPE_WPL, "application/vnd.ms-wpl");
     
                扫描结束后写入到数据库中。
                其他的应用程序通过接收MediaScannerService发出的ACTION_MEDIA_SCANNER_STARTED 和ACTION_MEDIA_SCANNER_FINISHED意图能够知道什么时候扫描操作开始和结束。
     
                  2. MediaProvider
                      对于存入数据库的多媒体信息,MediaProvider提供了数据访问的接口。MediaProvider继承了ContentProvider,我们先来看一下数据查询接口:
               Cursor  query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder);
            Uri:指明要查询的数据库名称加上表的名称,从MediaStore中我们可以找到相应信息的参数,具体请参考开发文档。 
            Projection: 指定查询数据库表中的哪几列,返回的游标中将包括相应的信息。Null则返回所有信息。
            selection: 指定查询条件
            selectionArgs:参数selection里有 ?这个符号是,这里可以以实际值代替这个问号。如果selection这个没有?的话,那么这个String数组可以为null。
            SortOrder:指定查询结果的排列顺序

            下面的命令将返回所有在外部存储卡上的音乐文件的信息:
            Cursor cursor = query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null,  
                    null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
      
      
            获取ID标签中的歌曲的专辑名:MediaStore.Audio.Media.ALBUM 
                   String album = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM));  
            其他具体参数请参考MediaStore类。
     
     
  • 相关阅读:
    Binary Tree Maximum Path Sum
    ZigZag Conversion
    Longest Common Prefix
    Reverse Linked List II
    Populating Next Right Pointers in Each Node
    Populating Next Right Pointers in Each Node II
    Rotate List
    Path Sum II
    [Leetcode]-- Gray Code
    Subsets II
  • 原文地址:https://www.cnblogs.com/sage-blog/p/3885791.html
Copyright © 2011-2022 走看看