【发布时间】:2015-05-26 05:14:15
【问题描述】:
我正在尝试设计一个Alarm 应用程序,当设备摇晃时播放Audio。
我正在使用Intent 和ActivityForResult 中的“ACTION_GET_CONTENT”从文件系统中选择Audio。我能够获取content uri,将其保存在SharedPreference 中并在另一个Activity 上使用MediaPlayer 播放它,并在Intent 中传递URI。
但是,一旦我关闭我的应用程序并重新打开它并尝试从URI 播放SharedPrederence 中的Audio,则不会播放Audio。
如何才能播放保存在content uri 和SharedPreference 中的音频?
从存储中获取 uri 的代码:
Intent intent = new Intent();
intent.setType("audio/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
startActivityForResult(intent, 1);
@Override
protected void onActivityResult(int requestCode,int resultCode,Intent data){
if(requestCode == 1){
if(resultCode == RESULT_OK){
//the selected audio.
String aud_uri = data.getData();
String quri = aud_uri.toString();
//Write to shared preferences
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("quake_uri",quri);
editor.commit();
//
}
}
从 sharedpreference 中获取的代码
sharedPref = this.getPreferences(Context.MODE_PRIVATE);
String quri = sharedPref.getString("quake_uri", "defaultString");
通过意图传递 uri 后在不同活动中播放音频的代码
String audio = getIntent().getStringExtra("audio");
Uri uri = Uri.parse(audio);
Mediaplayer player = new MediaPlayer();
...
不播放音频时的Logcat
05-26 12:53:44.103: E/MediaPlayer(17183): Unable to create media player
05-26 12:53:44.103: V/Error(17183): setDataSource failed.: status=0x80000000
05-26 12:53:44.113: W/System.err(17183): java.io.IOException: setDataSource failed.: status=0x80000000
05-26 12:53:44.113: W/System.err(17183): at android.media.MediaPlayer.nativeSetDataSource(Native Method)
05-26 12:53:44.113: W/System.err(17183): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1061)
我将 uri 传递给一个服务,该服务反过来打开 Activity 以使用从服务传递的 uri 播放音频
【问题讨论】:
-
分享一些可能的代码!
-
我已添加代码
-
你确定用“audio”键传递字符串吗?我在代码中看不到。
-
是的.,.,.,.dialogIntent.putExtra("audio", AUDI);开始活动(对话意图);当我不关闭应用程序时正在播放音频..,.,但是如果我关闭并重新打开或从后台服务启动活动,则音频无法正常工作,.,.,为此提供了 logcat
标签: android android-intent sharedpreferences android-mediaplayer android-contentprovider