为所有活动加载一次声音



我试图使用soundpool在我的android应用程序中播放声音。我有3个活动,我必须播放声音。所以我可以加载声音全局一次只有当应用程序启动??

我可以创建一个全局类并一次加载所有声音并在其他活动中使用它们吗?

你可以试试这个例子

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

是的,你可以在全局类中加载音频。谢天谢地,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();

最新更新