我试图使用soundpool在我的Android应用中播放声音。我有3个活动,我必须播放声音。那么只有在应用程序启动时才能全局加载声音吗?我可以创建一个全局类并加载所有声音并在其他活动中使用它们。
答案 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();
来自任何你想要的地方。