有效地重用 Android 媒体播放器
Reusing Android Media Player effectively
我想知道如何更好地重用 Android 中的 MediaPlayer 对象,这样如果我在我的应用程序中进行其他活动,当前的声音播放就不会停止。例如,我目前在 class 中使用 MediaPlayer,我在其中接收 AlarmManager (BroadcastReceiver)。这是我所拥有的,有更好的方法吗?
public class MyBroadcastReceiver extends BroadcastReceiver
{
MediaPlayer mp;
@Override
public void onReceive(Context context, Intent intent)
{
// TODO Auto-generated method stub
mp = new MediaPlayer();
playSound(context);
}
private void playSound(Context ctx)
{
//play the notification sound
AssetFileDescriptor afd = null;
try
{
afd = ctx.getAssets().openFd("notify.mp3");
}
catch (IOException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}
mp.setVolume(5f, 5f);
try
{
mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
}
catch (IllegalArgumentException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IllegalStateException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
try
{
mp.prepare();
}
catch (IllegalStateException | IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
mp.start();
if(!mp.isPlaying())
{
mp.release();
}
}
}
您可以使用服务。
请参考以下link。
http://www.java2s.com/Code/Android/Media/UsingServicetoplaymediafile.htm
我想知道如何更好地重用 Android 中的 MediaPlayer 对象,这样如果我在我的应用程序中进行其他活动,当前的声音播放就不会停止。例如,我目前在 class 中使用 MediaPlayer,我在其中接收 AlarmManager (BroadcastReceiver)。这是我所拥有的,有更好的方法吗?
public class MyBroadcastReceiver extends BroadcastReceiver
{
MediaPlayer mp;
@Override
public void onReceive(Context context, Intent intent)
{
// TODO Auto-generated method stub
mp = new MediaPlayer();
playSound(context);
}
private void playSound(Context ctx)
{
//play the notification sound
AssetFileDescriptor afd = null;
try
{
afd = ctx.getAssets().openFd("notify.mp3");
}
catch (IOException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}
mp.setVolume(5f, 5f);
try
{
mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
}
catch (IllegalArgumentException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IllegalStateException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
try
{
mp.prepare();
}
catch (IllegalStateException | IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
mp.start();
if(!mp.isPlaying())
{
mp.release();
}
}
}
您可以使用服务。 请参考以下link。 http://www.java2s.com/Code/Android/Media/UsingServicetoplaymediafile.htm