Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用void start()更改切换按钮_Java_Android - Fatal编程技术网

Java 如何使用void start()更改切换按钮

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

这是我的代码,我想不按按钮运行它

请帮帮我

我对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 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方法。。否则当我打开我的应用程序时,应用程序也会运行..或者我会给你我所有的源代码。。还是不工作,拉希尔。。怎样??请