Java 如何使用void start()更改切换按钮
这是我的代码,我想不按按钮运行它 请帮帮我 我对android感兴趣,这是我在学校的最后一个项目 谢谢你的出席 我的代码Java 如何使用void start()更改切换按钮,java,android,Java,Android,这是我的代码,我想不按按钮运行它 请帮帮我 我对android感兴趣,这是我在学校的最后一个项目 谢谢你的出席 我的代码 package com.andronoise; import android.app.Activity; import android.content.SharedPreferences; import android.media.MediaRecorder; import android.os.Bundle; import android.util.Log; import
package com.andronoise;
import android.app.Activity;
import android.content.SharedPreferences;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import android.widget.ToggleButton;
import java.text.DecimalFormat;
public class MainActivity extends Activity implements
InputListener {
InputSuara micInput;
TextView mdBTextView;
TextView mdBFractionTextView;
LevelBar mBarLevel;
double mOffsetdB = 10;
double mGain = 2500.0 / Math.pow(10.0, 90.0 / 20.0);
double mRmsSmoothed;
double mAlpha = 0.9;
private int mSampleRate;
private int mAudioSource;
private volatile boolean mDrawing;
private volatile int mDrawingCollided;
private static final String TAG = "MainActivity";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
micInput = new InputSuara(this);
setContentView(R.layout.activity_main);
mBarLevel = (LevelBar)findViewById(R.id.bar_level_drawable_view);
mdBTextView = (TextView)findViewById(R.id.dBTextView);
mdBFractionTextView = (TextView)findViewById(R.id.dBFractionTextView);
final ToggleButton onOffButton=(ToggleButton)findViewById(
R.id.on_off_toggle_button);
ToggleButton.OnClickListener tbListener =
new ToggleButton.OnClickListener() {
@Override
public void onClick(View v) {
if (onOffButton.isChecked()) {
readPreferences();
micInput.setSampleRate(mSampleRate);
micInput.setAudioSource(mAudioSource);
micInput.start();
} else {
micInput.stop();
}
}
};
onOffButton.setOnClickListener(tbListener);
}
private void readPreferences() {
SharedPreferences preferences = getSharedPreferences("LevelMeter",
MODE_PRIVATE);
mSampleRate = preferences.getInt("SampleRate", 8000);
mAudioSource = preferences.getInt("AudioSource",
MediaRecorder.AudioSource.VOICE_RECOGNITION);
}
@Override
public void processAudioFrame(short[] audioFrame) {
if (!mDrawing) {
mDrawing = true;
double rms = 0;
for (int i = 0; i < audioFrame.length; i++) {
rms += audioFrame[i]*audioFrame[i];
}
rms = Math.sqrt(rms/audioFrame.length);
mRmsSmoothed = mRmsSmoothed * mAlpha + (1 - mAlpha) * rms;
final double rmsdB = 20.0 * Math.log10(mGain * mRmsSmoothed);
mBarLevel.post(new Runnable() {
@Override
public void run() {
mBarLevel.setLevel((mOffsetdB + rmsdB) / 100);
DecimalFormat df = new DecimalFormat("##");
mdBTextView.setText(df.format(20 + rmsdB));
int one_decimal = (int) (Math.round(Math.abs(rmsdB * 10))) % 10;
mdBFractionTextView.setText(Integer.toString(one_decimal));
mDrawing = false;
}
});
} else {
mDrawingCollided++;
Log.v(TAG, "Level bar update collision, i.e. update took longer " +
"than 20ms. Collision count" + Double.toString(mDrawingCollided));
}
}
}
package.com.cn;
导入android.app.Activity;
导入android.content.SharedReferences;
导入android.media.MediaRecorder;
导入android.os.Bundle;
导入android.util.Log;
导入android.view.view;
导入android.widget.TextView;
导入android.widget.ToggleButton;
导入java.text.DecimalFormat;
公共类MainActivity扩展活动实现
输入侦听器{
输入微输入;
text视图mdBTextView;
TextView mdBFractionTextView;
LevelBar mBarLevel;
双mOffsetdB=10;
双mGain=2500.0/数学功率(10.0,90.0/20.0);
双mrmsmoothed;
双mAlpha=0.9;
私有内部采样率;
私人来源;
私有可变布尔mDrawing;
私有volatile int mdrawing冲突;
私有静态最终字符串TAG=“MainActivity”;
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
micInput=新的输入(本);
setContentView(R.layout.activity_main);
mBarLevel=(LevelBar)findViewById(R.id.bar\u level\u drawing\u视图);
mdBTextView=(TextView)findViewById(R.id.dBTextView);
mdBFractionTextView=(TextView)findViewById(R.id.dBFractionTextView);
最终ToggleButton onOffButton=(ToggleButton)findViewById(
R.id.on\u off\u切换按钮);
ToggleButton.OnClickListener tbListener=
新建ToggleButton.OnClickListener(){
@凌驾
公共void onClick(视图v){
if(onOffButton.isChecked()){
readPreferences();
micInput.setSampleRate(mSampleRate);
micInput.setAudioSource(mAudioSource);
micInput.start();
}否则{
micInput.stop();
}
}
};
onOffButton.setOnClickListener(tbListener);
}
私有void readPreferences(){
SharedReferences首选项=GetSharedReferences(“LevelMeter”,
模式(私人),;
mSampleRate=preferences.getInt(“SampleRate”,8000);
mAudioSource=preferences.getInt(“音频源”,
MediaRecorder、音频源、语音识别);
}
@凌驾
公共音频帧(短[]音频帧){
如果(!mDrawing){
mDrawing=true;
双均方根=0;
对于(int i=0;i
每当用户单击任何位置时,您都希望执行一些代码
好吧……我想我终于明白你的意思了。每次用户单击任何位置时,都会调用此方法:
@Override
public void onUserInteraction() {
super.onUserInteraction();
}
因此,在您的情况下,代码应该是:
@Override
public void onUserInteraction() {
super.onUserInteraction();
if (onOffButton.isChecked()) {
readPreferences();
micInput.setSampleRate(mSampleRate);
micInput.setAudioSource(mAudioSource);
micInput.start();
} else {
micInput.stop();
}
编辑: 从文档中: 我不确定您希望何时执行代码,但请看一下图表,并找到合适的位置。下面是一个例子:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (onOffButton.isChecked()) {
readPreferences();
micInput.setSampleRate(mSampleRate);
micInput.setAudioSource(mAudioSource);
micInput.start();
} else {
micInput.stop();
}
像这样
@Override
public void onResume() {
super.onResume();
Inisialisasi();
mDisplay.setLevel(0, mThreshold);
if (!mRunning) {
mRunning = true;
start();
}
}
@Override
public void onStop() {
super.onStop();
stop();
}
private void start() {
mSensor.start();
if (!mWakeLock.isHeld()) {
mWakeLock.acquire();
}
mHandler.postDelayed(mPollTask, POLL_INTERVAL);
}
哈哈哈,你也是。。你能解决我的问题吗Ruchir?我甚至不知道你的问题是什么!出什么事了?给我一些细节,伙计!我想在不按切换按钮的情况下运行应用程序。。是的,似乎没有错误的代码。你不能这么说!我仍然完全不知道你想做什么!多解释。我真的很想帮助你,但是由于信息的缺乏,我无法帮助你。我的大学级讲师希望我的应用程序在应用程序打开时运行。。不使用切换按钮或onclick方法。。否则当我打开我的应用程序时,应用程序也会运行..或者我会给你我所有的源代码。。还是不工作,拉希尔。。怎样??请