【问题标题】:Handling Media Files in Android by installed apps通过已安装的应用程序处理 Android 中的媒体文件
【发布时间】:2016-02-15 23:47:12
【问题描述】:

我有一个记录音频和视频的应用程序。然后应用程序中有一个列表,显示这些记录的文件。当用户单击此文件之一时,我想显示用户可以选择播放此单击文件的应用程序选项。下面是一个例子。

我在互联网上看到的所有示例都是使用我已经在使用的媒体播放器,但我希望暂停、停止等功能由用户设备中已经可用的应用程序处理。

这可能吗?如果有怎么办?

【问题讨论】:

    标签: android android-mediaplayer android-video-player android-audiorecord


    【解决方案1】:

    我猜你处理音频和视频的Activity 应该在AndroidManifest 中有这个。 下面的intent-filer 用于音频 文件,同样您可以为相同的Activity 添加视频 文件。

    <activity ...>
            <intent-filter>
                <action android:name="android.intent.action.GET_CONTENT" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.OPENABLE" />
                <data android:mimeType="audio/*"/>
            </intent-filter>
    </activity>
    

    编辑: 为您的Activity

    假设您显示一个音频文件列表,并且假设用户单击一个。因此,当用户单击某个项目时。你只需要设置结果。 例如。

        setResult(RESULT_OK, new Intent().setData(YOUR_URI));
    

    第二个参数只是我们需要传递给调用Application的数据,基本上我们传递数据的URI

    编辑 2:RESULT_OKActivity 的继承变量。你不需要定义它。

    希望对你有帮助。

    【讨论】:

    • 但是当用户点击列表中的一个记录后我应该怎么做。我需要打一个特定的电话吗?
    • @Sahil 我编辑了我的答案。您可以找到解决方案。
    • 太好了,我现在就试一试...非常感谢
    • 我试了一下,但它没有按预期工作。单击列表项时没有任何反应。显示了我的 toast 消息,该消息链接到列表项单击方法。
    • @Sahil 与Fragment 合作。使用getActivity().setResult(...);
    【解决方案2】:

    我通过在互联网上阅读找到了答案。

    首先准备文件位置,然后用该位置的数据打开一个意图

    Uri fileURi = Uri.parse(tempFileURi); //i.e. /storage/emulated/0/Android/data/com.sahilsaid.appname/files/Music/Recording200.3gp
    File file = new File(fileURi.toString());
    
     if (file.exists()) {
        Uri finalFileUri = Uri.fromFile(file);
        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_VIEW);
        intent.setDataAndType(finalFileUri, URLConnection.guessContentTypeFromName(finalFileUri.toString()));
        startActivity(intent);
    
     }
    

    您还需要修改您的 AndroidManifest.xml 文件并按照@Aky 上面的建议添加意图过滤器

       <activity
            android:name=".exampleActivity"
            android:label="@string/title_activity_example">
            <intent-filter>
                <action android:name="android.intent.action.GET_CONTENT" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.OPENABLE" />
                <data android:mimeType="audio/*"/>
            </intent-filter>
        </activity>
    

    欲了解更多信息,请访问这篇文章:

    https://software.intel.com/en-us/blogs/2014/03/20/video-playing-with-android-media-player

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多