繁体   English   中英

SoundPool Android无法播放

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM