2016-12-22 10 views
0

Я хотел бы знать, как лучше использовать объект MediaPlayer в Android, чтобы, если я пойду на другие действия в своем приложении, текущее воспроизведение звука не остановится. Например, в настоящее время я использую MediaPlayer внутри класса, где я получаю AlarmManager (BroadcastReceiver). Вот что я имею, есть ли лучшие способы сделать это?Эффективное использование Android Media Player

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(); 
    } 
} 
} 
+1

[Релевантно] (http://stackoverflow.com/questions/29371136/how-to-make-my-mediaplayer-activity-run-in-background) –

ответ