这是从音乐应用程序打开选择器的意图
public void launchMusicPlayer(View view) {
Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i,1);
}
及以下是尝试获取歌曲的 onActivityResult 代码 ,但问题是按下测试按钮时,不会播放任何内容 因为我不熟悉编码我不知道我做错了什么。
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK && requestCode == 1) {
final MediaPlayer testSong = new MediaPlayer();
Uri songUri = data.getData();
try {
testSong.setDataSource(this, songUri);
} catch (IOException e) {
e.printStackTrace();
}
testSong.prepareAsync();
test.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
testSong.start();
}
});
}
}
答案 0 :(得分:1)
问题可能是因为prepareAsync()
是异步的,因此当您致电start()
时,MediaPlayer可能尚未就绪。有两种方法可以解决这个问题:
使用prepare()
代替prepareAsync()
test.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
testSong.prepare();
testSong.start();
}
});
在start()
setOnPreparedListener()
方法
test.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
testSong.prepareAsync();
testSong.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer player) {
player.start();
}
}
});
请参阅此处的文档http://developer.android.com/reference/android/media/MediaPlayer.html