[英]SoundPool Android not playing
现在的问题是,当我旋转手机时,音乐又重新开始了,如何防止这种情况发生?
实际上,我想以横向视图启动该应用程序,并以这种方式锁定它。
这是代码:
package elfinha.app;
/**
* Created by quest on 01/06/14.
*/
import android.media.AudioManager;
import android.media.SoundPool;
import android.media.SoundPool.OnLoadCompleteListener;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
package testapps.emilyssong;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MediaPlayer dontcallme = MediaPlayer.create(this, R.raw.dontcallmedarling);
dontcallme.start();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
我建议使用MediaPlayer这样的:
package testapps.emilyssong;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MediaPlayer dontcallme = MediaPlayer.create(this, R.raw.dontcallmedarling);
dontcallme.start();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
MediaPlayer dontcallme = MediaPlayer.create(this, R.raw.dontcallmedarling);
dontcallme.start();
}
您的主要问题是设备旋转时会重新创建MediaPlayer。 锁定它可以解决此问题,但这实际上只是一个创可贴,因为您不了解问题所在。 如果音乐在打开时只播放一次,则可以设置一个变量,该变量在播放时变为true,然后在旋转时不播放,除非再次变为false。
顶上.....
boolean isPlaying=false;
在onCreate中...
if(!isPlaying){
MediaPlayer dontcallme = MediaPlayer.create(this, R.raw.dontcallmedarling);
dontcallme.start();
isPlaying=true;}
然后,您可以轻松地设置一个侦听器,使其在完成或离开时再次变为false。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.