Когда я пытаюсь работать, это шоу на textviev значение «0.0». я получаю коды с этого веб-сайта в основном я получаю разрешение на <uses-permission android:name="android.permission.RECORD_AUDIO" />
разрешения поддавки Реланиум устанавливающих-приложений-микрофонных он возвращается значение «0,0» , как на самом деле работает getAmplitude(); может кто-нибудь объяснитьgetAmplitude не работает
static final private double EMA_FILTER = 0.6;
TextView text;
Button buton;
Handler handler;
boolean state = false;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_karpuz_sec);
text = (TextView) findViewById(R.id.text);
buton = (Button) findViewById(R.id.button);
handler = new Handler();
buton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(!state){
try {
start();
} catch (IOException e) {
e.printStackTrace();
}
}
else
stop();
}
});
}
Runnable runnable = new Runnable() {
@Override
public void run() {
while (!state){
text.setText(Double.toString(getAmplitudeEMA()));;
handler.postDelayed(this,100);
}
}
};
private MediaRecorder mRecorder = null;
private double mEMA = 0.0;
public void start() throws IOException {
if (mRecorder == null) {
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mRecorder.setOutputFile("/dev/null");
mRecorder.prepare();
mRecorder.start();
mEMA = 0.0;
state = true;
Toast.makeText(getApplicationContext(),"Ses Ölçümü Başladı",Toast.LENGTH_SHORT).show();
buton.setText("DURDUR");
text.setText(Double.toString(getAmplitudeEMA()));
}
}
public void stop() {
if (mRecorder != null) {
mRecorder.stop();
mRecorder.release();
mRecorder = null;
state = false;
Toast.makeText(getApplicationContext(),"Ses Ölçümü Durdu",Toast.LENGTH_SHORT).show();
buton.setText("BAŞLAT");
}
}
public double getAmplitude() {
if (mRecorder != null)
return (mRecorder.getMaxAmplitude()/2700.0);
else
return 0;
}
public double getAmplitudeEMA() {
double amp = getAmplitude();
mEMA = EMA_FILTER * amp + (1.0 - EMA_FILTER) * mEMA;
return mEMA;
}
}
Я попытался исправить ваше сообщение, но это все еще непонятно. Попробуйте [this] (http://meta.stackoverflow.com/questions/291362/advice-for-non-native-english-speakers/291370#291370), это может помочь. – peterh