Android 使用音频管理器暂停媒体
我使用tab活动,其中有多个歌曲播放列表。因此,每当我从一个播放列表播放歌曲并移动到另一个播放列表时,这两首歌同时开始播放。现在我想要的是,每当我仅使用音频管理器而不使用任何服务从新活动中选择任何歌曲时,停止我以前活动中的音乐。那么,有人可以帮助我或给我一些这方面的指导吗 代码:-Android 使用音频管理器暂停媒体,android,media-player,tabactivity,android-audiomanager,Android,Media Player,Tabactivity,Android Audiomanager,我使用tab活动,其中有多个歌曲播放列表。因此,每当我从一个播放列表播放歌曲并移动到另一个播放列表时,这两首歌同时开始播放。现在我想要的是,每当我仅使用音频管理器而不使用任何服务从新活动中选择任何歌曲时,停止我以前活动中的音乐。那么,有人可以帮助我或给我一些这方面的指导吗 代码:- public class AllSongs extends ListActivity implements AudioManager.OnAudioFocusChangeListener{ private Cur
public class AllSongs extends ListActivity implements AudioManager.OnAudioFocusChangeListener{
private Cursor musiccursor;
int music_column_index;
int songPosition;
int ResumePosition=0;
MediaPlayer mMediaPlayer;
String filen,filename;
ImageView imageView;
ListAdapter adapter;
int count,index,top;
ListView lv;
Parcelable state;
View v;
AudioManager am;
int result;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState)
am = (AudioManager) getSystemService(AUDIO_SERVICE);
result=am.requestAudioFocus(this,AudioManager.STREAM_MUSIC,AudioManager.AUDIOFOCUS_GAIN);
//Creating list of songs using MediaStore
mMediaPlayer=new MediaPlayer();
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
if(result!=AudioManager.AUDIOFOCUS_REQUEST_GRANTED){
Toast.makeText(getApplicationContext(), "Request not Granted", Toast.LENGTH_LONG).show();
}
else{
mMediaPlayer.reset();
musiccursor.moveToPosition(position);
filename = musiccursor.getString(music_column_index);
mMediaPlayer.setDataSource(filename);
mMediaPlayer.prepare();
mMediaPlayer.start();
}
@Override
public void onAudioFocusChange(int focusChange) {
// TODO Auto-generated method stub
Log.d("In AudioManager", "adajdjdasdjsd");
if(focusChange==AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK){
mMediaPlayer.stop();
mMediaPlayer.release();
}
else{
mMediaPlayer.stop();
}
}
另一项活动
public class Artists extends ListActivity implements OnAudioFocusChangeListener{
setContentView(R.layout.artists);
manager = (AudioManager) getSystemService(AUDIO_SERVICE);
result=manager.requestAudioFocus(this,AudioManager.STREAM_MUSIC,AudioManager.AUDIOFOCUS_GAIN);
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
f(result!=AudioManager.AUDIOFOCUS_REQUEST_GRANTED){
Toast.makeText(getApplicationContext(), "Request not Granted", Toast.LENGTH_LONG).show();
}
else{
mMediaPlayer.reset();
musiccursor.moveToPosition(position);
filename = musiccursor.getString(music_column_index);
mMediaPlayer.setDataSource(filename);
mMediaPlayer.prepare();
mMediaPlayer.start();
}
}
@Override
public void onAudioFocusChange(int focusChange) {
// TODO Auto-generated method stub
if(focusChange==AudioManager.AUDIOFOCUS_LOSS_TRANSIENT){
mMediaPlayer.stop();
mMediaPlayer.reset();
mMediaPlayer.release();
}
}
看看这个:基本上你会请求音频焦点,然后其他活动会在失去音频焦点时监听。这是正确的解决方案,因为这也意味着如果用户打开音乐播放器,你的应用程序将停止播放。我尝试过,请查看我的更新问题,但仍有多首歌曲正在播放。你是否实现了onAudioFocusChangeListener?是的,我已经实现了。你是否使用同一活动两次?或者是否有其他活动也开始播放音乐?我正在使用另一个活动,暂停和播放在这个活动中没有问题,但当我使用另一个活动时,唯一的问题就是出现了。