我正在尝试使用soundpool发出警报
但我在下面遇到了一些麻烦
11-05 16:42:36.094 20402-20432 / com.example.lab714_pc.drug D / EGL_emulation:eglMakeCurrent:0xa99850c0:ver 3 1(tinfo 0xa9983260) 11-05 16:44:02.883 20402-20402 / com.example.lab714_pc.drug E / TEST:TEST 11-05 16:44:02.885 20402-21761 / com.example.lab714_pc.drug E / WVMExtractor:无法打开libwvm.so:dlopen失败:未找到库“libwvm.so” 11-05 16:44:02.885 20402-20402 / com.example.lab714_pc.drug W / SoundPool:样品1未准备好 11-05 16:44:02.888 20402-21762 / com.example.lab714_pc.drug I / OMXClient:MuxOMX ctor
以下是我的代码
public class PlayReceiver extends BroadcastReceiver {
private SoundPool sp;
private boolean spLoader = false;
private int sourceid;
@Override
public void onReceive(Context context, Intent intent) {
Bundle bData = intent.getExtras();
if (bData.get("msg").equals("play_voice")) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
AudioAttributes audioAttrib = new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_GAME)
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.build();
sp= new SoundPool.Builder().setAudioAttributes(audioAttrib).setMaxStreams(6).build();
Log.e("TEST","TEST");
}
else {
sp = new SoundPool(6, AudioManager.STREAM_MUSIC, 0);
Log.e("TEST","TEST");
}
sp.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
@Override
public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
if (sampleId == R.raw.test) {
spLoader = true;
}
}
});
sourceid = sp.load(context, R.raw.test, 1);
playSounds(1, context);
}
}
public void playSounds(int repeatTime, Context context) {
AudioManager am = (AudioManager) context.getApplicationContext()
.getSystemService(Context.AUDIO_SERVICE);
float audMaxVolumn = am.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
float audCurrentVolumn = am.getStreamVolume(AudioManager.STREAM_MUSIC);
float volRatio = audCurrentVolumn / audMaxVolumn;
sp.play(sourceid, volRatio, volRatio, 1, repeatTime, 1);
}
}
以下是警报的主要内容
Intent intent11 = new Intent(MainActivity.this, PlayReceiver.class);
intent11.putExtra("msg", "play_voice");
intent11.addCategory(String.valueOf(SystemClock.elapsedRealtime()));
long elapsed = SystemClock.elapsedRealtime() + 60 * 1000; //60秒
PendingIntent pi = PendingIntent.getBroadcast(MainActivity.this, 1, intent11,
PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, elapsed , pi);
答案 0 :(得分:0)
我将代码更改为以下代码
public class PlayReceiver extends BroadcastReceiver {
private SoundPool sp;
private boolean spLoader = false;
@Override
public void onReceive(Context context, Intent intent) {
Bundle bData = intent.getExtras();
if (bData.get("msg").equals("play_voice")) {
SoundPool sp = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
/** soundId for Later handling of sound pool **/
int soundId = sp.load(context, R.raw.test, 1); // in 2nd param u have to pass your desire ringtone
sp.play(soundId, 1, 1, 0, 0, 1);
MediaPlayer mPlayer = MediaPlayer.create(context, R.raw.test); // in 2nd param u have to pass your desire ringtone
//mPlayer.prepare();
mPlayer.start();
}
}