标签:android android-intent music-player android-music-player
我正在开发我的第一个Android应用程序.这是录音应用程序.我正在使用MediaRecord录制语音,如下所示:
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setOutputFile(mFileName);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
try {
mRecorder.prepare();
} catch (IOException e) {
Log.e(LOG_TAG, "prepare() failed");
}
mRecorder.start();
我有另一个活动来播放这些录制的声音(.3gpp文件).在此活动中,有一个ListView包含我录制的声音.我想用手机上安装的任何音乐播放器播放声音.这是我的代码:
(此代码的来源:https://stackoverflow.com/a/3367231/556169)
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
File file = new File((String) ((TextView) item).getText());
intent.setDataAndType(Uri.fromFile(file), "audio/*");
startActivity(intent);
但我得到“音乐播放器无法播放此媒体类型”的错误.
当我浏览这个音频文件并通过我的文件浏览器播放它时,它的工作完美(这意味着,我正在录制声音,成功).但是当我在我的应用程序中使用Intent时,我收到了错误.
额外
我不能使用MediaStore.INTENT_ACTION_MUSIC_PLAYER,因为它已被弃用.
我不能使用Intent.CATEGORY_APP_MUSIC因为它需要min API lvl 15.我的项目的最低API级别应为8.
解决方法:
我认为最好的选择是使用选择器活动,用户可以选择他喜欢的媒体播放器.
Intent viewIntent = new Intent(Intent.ACTION_VIEW);
File file = new File((String) ((TextView) item).getText());
viewIntent.setDataAndType(Uri.fromFile(file), "audio/*");
startActivity(Intent.createChooser(viewIntent, null));
顺便说一句,传递文件名的方式对我来说似乎有点奇怪.我会考虑改变它.
我不确定,但如果您声明相应的intent-filters,您应该能够在选择器中看到自己的播放器.
标签:android,android-intent,music-player,android-music-player 来源: https://codeday.me/bug/20190728/1567159.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。