【问题标题】:How can I play sound on all of my activities如何在我的所有活动中播放声音
【发布时间】:2017-08-23 12:33:36
【问题描述】:

我想在我的所有活动中使用我的声音,而不仅仅是主要活动。我把这行

MediaPlayer ring = MediaPlayer.create(MainActivity.this, R.raw.song);
ring.start(); 

但这仅适用于主 Activity。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    MediaPlayer ring = MediaPlayer.create(MainActivity.this, R.raw.song);
    ring.start();

【问题讨论】:

  • 一次只有一个活动处于活动状态。为什么你认为它的工作方式不同?
  • 这是一种可能的方式。您可以通过一个活动和多个片段来做到这一点。您可以在不中断音乐的情况下在活动中加载片段。或者,也许您可​​以在您的 Application 类中执行此操作。
  • 我在这个项目中没有使用片段,只是活动。这就是我想要加载音乐而不中断它的方法。但是有活动

标签: java android


【解决方案1】:

你可以试试这样的

1.将此代码添加到您的所有活动中

MediaPlayer ring = MediaPlayer.create(MainActivity.this,    
    R.raw.song);
ring.start(); 

2。创建一个这样的方法并从您要播放音乐的活动中调用此消息

public void Playmusic(Context context){
   MediaPlayer ring = MediaPlayer.create(context, R.raw.song);
    ring.start(); 
}

现在就这样调用这个方法

Playmusic(MainActivity.this);

【讨论】:

  • 你提到的方法在哪里?我创建一个类把它放在那里还是什么?
  • 如果您在MainActivity 中添加此方法,则可以在您的活动中的任何位置使用此方法,而不是在类似MainActivity.Playmusic(YourOtherActivity.this); 的其他活动中调用此方法
【解决方案2】:

在服务中播放您的歌曲并仅在那里初始化媒体播放器对象

Intent svc=new Intent(this, BackgroundSoundService.class);
startService(svc);
public class BackgroundSoundService extends Service {
private static final String TAG = null;
MediaPlayer player;
public IBinder onBind(Intent arg0) {

    return null;
}
@Override
public void onCreate() {
    super.onCreate();
    player = MediaPlayer.create(this, R.raw.idil);
    player.setLooping(true); // Set looping
    player.setVolume(100,100);

}
public int onStartCommand(Intent intent, int flags, int startId) {
    player.start();
    return 1;
}

public void onStart(Intent intent, int startId) {
    // TO DO
}
public IBinder onUnBind(Intent arg0) {
    // TO DO Auto-generated method
    return null;
}

public void onStop() {

}
public void onPause() {

}
@Override
public void onDestroy() {
    player.stop();
    player.release();
}

@Override
public void onLowMemory() {

}
}

请在 Manifest 中调用此服务

<service android:enabled="true" android:name=".BackgroundSoundService " />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多