【发布时间】:2021-02-10 16:33:53
【问题描述】:
如果我在这里没有得到我所有的术语,请原谅我:我仍然是一个 Android 新手。我正在尝试创建一个寻呼机应用程序。 ReceiveAlert 活动显示警报的内容并在打开时播放声音。经过一番挣扎和谷歌搜索,我已经将音量调到最大以播放声音。这是 onCreate 代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_receive_alert);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
checkPermission();
}
Bundle bundle = getIntent().getExtras();
if (bundle != null) {
taskingalert = bundle.getString(SmsReceiver.EXTRA_MESSAGE);
TextView receivedAlert = findViewById(R.id.receivedAlert);
receivedAlert.setText(taskingalert);
MediaPlayer player = MediaPlayer.create(getApplicationContext(), R.raw.thechain);
final AudioManager mAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE); final int originalVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
int maxVolume = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, maxVolume,AudioManager.FLAG_SHOW_UI + AudioManager.FLAG_PLAY_SOUND);
player.setLooping(true);
player.start();
}
}
然后有一个按钮可以停止声音并移动到 SendResponse 活动。这是我遇到问题的地方。我的那部分代码是:
public void respond(View view) {
mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, originalVolume,AudioManager.FLAG_SHOW_UI + AudioManager.FLAG_PLAY_SOUND);
player.release();
player.stop();
Intent intent = new Intent(this, SendResponseActivity.class);
intent.putExtra(EXTRA_MESSAGE, taskingalert);
startActivity(intent);
}
但是,Android Studio 将 mAudioManager、originalVolume 和 player 列为问题,我无法理解建议的解决方案。我认为它们都有一个仅限于 onCreate 的范围,并且不适用于“响应”。
我尝试将整个 public void respond(View view) 放在 onCreate 中,但这无济于事,还会引发其他问题。
我尝试在 onCreate 之前声明 MediaPlayer 播放器、AudioManager mAudioManager 和 originalVolume。这消除了 Android Studio 中的红色突出显示,但应用在测试中失败。
任何帮助将不胜感激。
【问题讨论】: