为所有活动加载一次声音

时间:2016-08-20 02:10:09

标签: android soundpool

我试图使用soundpool在我的Android应用中播放声音。我有3个活动,我必须播放声音。那么只有在应用程序启动时才能全局加载声音吗?我可以创建一个全局类并加载所有声音并在其他活动中使用它们。

2 个答案:

答案 0 :(得分:0)

您可以尝试此示例

//start service
Intent svc=new Intent(this, BackgroundSoundService.class);
startService(svc);

//Add in manifest file
<service
    android:enabled="true"
    android:name="com.package.name.BackgroundSoundService" />

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() {

    }
}

答案 1 :(得分:0)

是的,您可以在全局课程中加载音频。值得庆幸的是,android为我们提供了一个名为Application.java的类。

public class TestApp extends Application {

    private static final String TAG = "TestApp";

    private static TestApp sTestApp;

    private MediaPlayer mMediaPlayer;

    @Override
    public void onCreate() {
        super.onCreate();
        sTestApp = this;
        mMediaPlayer = MediaPlayer.create(this, R.raw.music);
        mMediaPlayer.setVolume(1, 1); //Volume should have to be between 0.0 to 1.0
    }

    public static TestApp getInstance() {
        return sTestApp;
    }

    public void play() {
        mMediaPlayer.start();
    }
}

然后在清单

中将其声明为应用程序类
<application
        android:name=".TestApp"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">
        .........
</application>

现在,当您的应用程序启动时,此类将自动启动,并在应用程序完全销毁后销毁。

现在您可以通过调用

来播放音频
TestApp.getInstance().play();

来自任何你想要的地方。