android 多媒体文件关联之MIME TYPE

                在我们打开手机中的文件夹,并点击文件时,会跳出一个dialog的选项面板,上面显示的就是我们点击的文件所有关联的应用,也就是能够用这些应用来读取我们的文件;下面要描述的就是,开发者如在自己的应用中实现点击文件调出相关的应用选项面板以及点击手机中的文件关联到我们自己写的应用程序并显示在面板上。

              下面实现的是,点击手机中的音频文件如何关联到我自己写的音乐播放器!


     在手机系统自带的应用,已经对点击文件,调出能够处理文件的应用面板作一处理,下面的代码片段是用来启动面板:

     public void startSystemIntent(Context context, Uri musicUri, String type) {
		Intent intent = new Intent(Intent.ACTION_VIEW); //启动应用程序中对应的Activity
                intent.setDataAndType(musicUri , type);           //传给应用程序的数据,在这musicUri是文件的路径,type是MIME的类型用来关联我们的相关应用程序(也就是头版)
                Intent playIntent = Intent.createChooser(intent, "可选应用程序:"); //重定义系统默认的选项面板,  后面的字符串是定义面板的标题。
		
		//启动面板Dialog
              context.startActivity(playIntent);
     }

     点击了音频文件后,要关联到音乐播放器,该怎么办,继续往下走:

      

<activity android:name="com.ych.wifibluetoothmusicplayer.demo.MusicPlayActivity"
                  android:label="@string/app_name"
                  android:configChanges="orientation"
                  android:theme="@android:style/Theme.Black.NoTitleBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
                
            </intent-filter>
            <intent-filter >
                <action android:name="android.intent.action.VIEW" />

     			<category android:name="android.intent.category.DEFAULT" />

     			<data android:mimeType="audio/*"/>
            </intent-filter>
</activity>
      

    此代码来自manifest中,相信你对第一个intent-filter 不陌生,正是系统关联启动程序的入口的标志,那么第二个intent-filter呢,没错这个就是我们上面提到的,看到action.View,

这是上面提到要启动的Activity的入口标志,<data android:mimeType="audio/*"   这个才是我们的主角了,audio 就是和所有音频相关,后面  /*  表示是只要是音频文件,不管是什么格式,都可以关联到这个播放器程序,处理这个文件;

     如果 /*  换成 /x-mpeg 表示只有打开mp3文件时,才能关联到这个播放器程序,  

如果audio/* 换成 video/* 表示是只要是视频文件,不认是什么格式,都可关联。 

下面是一些其他音视频格式相关的MIME的类型:


    {".m3u", "audio/x-mpegurl"},
  {".m4a", "audio/mp4a-latm"},
  {".m4b", "audio/mp4a-latm"},
  {".m4p", "audio/mp4a-latm"},
  {".m4u", "video/vnd.mpegurl"},
  {".m4v", "video/x-m4v"},
  {".mov", "video/quicktime"},
  {".mp2", "audio/x-mpeg"},
  {".mp3", "audio/x-mpeg"},
  {".mp4", "video/mp4"},


       最后 ,当选择了该播放器应用程序处理文件,应用程序启动后,该怎么处理这个文件呢,

   

private void onNewIntent() {
    	if(getIntent()!=null)
    	{
			String musicPath = getIntent().getData().getPath(); //得到文件的路径,
			int songIndex = musicPath.lastIndexOf("/");
//			int lll = musicPath.lastIndexOf("-");
			int songNameIndex = musicPath.lastIndexOf(".");
			String songName = musicPath.substring(songIndex + 1, songNameIndex);  //得到歌曲的名字,当然还可以获取歌曲的大小、艺术家
//			String kkkString = musicPath.substring(lll+2, songNameIndex);
			Log.i("MusicPlayActivity", "" + songName+","+kkkString);
    	}
}

这个片段来自启动对应的Activity中Oncreate 中调用的方法:之后就是播放器所要处理的事。到此结束。



            

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值