我正在写一个计时器应用程序,每30秒发一次服务并发出哔哔声(实际上有一个下拉时间会改变那个时间).
然而,当我让应用程序发出哔哔声时,哔声持续很长时间并冻结应用程序,最终(大约5秒后)它完成然后计时器赶上.为什么会这样?我该如何解决?这是我的代码:
MainActivity.java:
package com.example.servicetimer;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.Ringtone;
import android.media.RingtoneManager;
import android.media.ToneGenerator;
import android.net.Uri;
import android.os.Vibrator;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private Button startButton;
private Button pauseButton;
private Button resetButton;
private TextView timerValue;
private TextView timerValueMils;
private long miliTime;
private int beepTime = 0;
private boolean running = false;
private boolean beep …
Run Code Online (Sandbox Code Playgroud) 我是安卓开发的新手
我正在一个 android 应用程序中工作,它只是改变音量并播放哔声“以预览当前的声级”
我startTone
在ToneGenerator
课堂上使用来生成这个哔哔声,像这样:
ToneGenerator tg = new ToneGenerator(AudioManager.STREAM_RING, 100);
tg.startTone(ToneGenerator.TONE_PROP_BEEP);
Run Code Online (Sandbox Code Playgroud)
但有时此代码不起作用并生成以下异常
11-20 00:32:44.262: E/AudioTrack(4701): AudioFlinger could not create track, status: -12
11-20 00:32:44.262: E/ToneGenerator(4701): AudioTrack->initCheck failed
Run Code Online (Sandbox Code Playgroud)
谢谢。
在我的应用程序中,我正在使用ToneGenerator播放简单的声音。通过使用6.0编译应用程序来测试我的应用程序时,由于ToneGenerator的init方法,我的应用程序随机崩溃。以下是例外。
java.lang.RuntimeException: Init failed
04-21 12:34:05.497 7166 7166 E MyApplication: at android.media.ToneGenerator.native_setup(Native Method)
04-21 12:34:05.497 7166 7166 E MyApplication: at android.media.ToneGenerator.<init>(ToneGenerator.java:746)
Run Code Online (Sandbox Code Playgroud)
我以下面的方式使用音调发生器。
public ToneGenerator toneGenerator;
public void playSound() {
if (toneGenerator == null) {
toneGenerator = new ToneGenerator(AudioManager.STREAM_NOTIFICATION, 100);
}
toneGenerator.startTone(ToneGenerator.TONE_CDMA_ANSWER, 200);
}
public void releaseToneGenerator() {
if (toneGenerator != null) {
toneGenerator.release();
}
}
Run Code Online (Sandbox Code Playgroud)
任何人都面临相同的问题吗?..以前,我的应用程序是在4.4上运行的,因此我们没有观察到任何崩溃。在6.0中应用程序崩溃