gpt4 book ai didi

android - 当我选择项目时播放和覆盖媒体文件

转载 作者:搜寻专家 更新时间:2023-11-01 08:46:14 25 4
gpt4 key购买 nike

我有一个应用程序,当我选择任何项目时,它将播放该媒体文件,但是当我选择其他项目时,旧媒体继续播放并且当前媒体文件被覆盖(当前文件也在播放)所以我我正在收听两个媒体文件。

我写了下面的代码:

ImageView songView;
Gallery songGallery;
MediaPlayer mp;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.song_test);
songView = (ImageView) findViewById(R.id.songView);
songGallery = (Gallery) findViewById(R.id.songGallery);


songGallery.setAdapter(new MyGalleryAdapter(getApplicationContext()));


songGallery.setOnItemSelectedListener(new OnItemSelectedListener() {

@Override
public void onItemSelected(AdapterView<?> parent, View arg1,
int arg2, long id) {
// TODO Auto-generated method stub

songView.setImageResource(symbolIds[arg2]);

String imageName = getResources().getResourceEntryName(
symbolIds[arg2]);

Uri audio = Uri.parse("android.resource://" + getPackageName()
+ "/raw/" + imageName + "");

mp = MediaPlayer.create(getApplicationContext(), audio);


try {
if (mp.isPlaying()) {

mp.reset();
}

mp.start();

} catch (Exception e) {
Toast.makeText(getApplicationContext(),
"Error", Toast.LENGTH_LONG).show();
Toast.makeText(getApplicationContext(), e.toString(),
Toast.LENGTH_LONG).show();
}

....
....
}
}

所以我的问题是 - 当我选择项目时,歌曲播放得很好,但当我选择其他项目时,旧歌曲也在播放当前歌曲。

所以我想停止这首老歌...

我只想播放当前选择的歌曲。

最佳答案

问题是 MediaPlayer 正在重新创建而不是被重置。您可以使用构造函数代替 #create() 工厂调用。在下面的代码中,如果 mp 已经创建,它会被重置,然后准备并启动数据源。

if (mp != null) {
mp.reset();
} else {
mp = new MediaPlayer();
}

// Now set the datasource
mp.setDataSource(context, audio);
mp...
mp.prepare();
mp.start();

理想情况下,您应该调用 prepareAsync 并让回调 onPrepare() 调用实际的 mediaPlayer.start,这样 prepare 就不会阻塞主线程。

mp.setOnPreparedListener(this);
mp.setDataSource(..)
mp.prepareAsync();


@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}

关于android - 当我选择项目时播放和覆盖媒体文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27981947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com