SeekBarスライダの値をブルートゥースとアンドロイドに送信する作業コードがあります。私はそれを読み取って加速度計の値をブルートゥースに送るように変更したいので、携帯電話を傾けてロボットを制御することができます。 Seekbarコードはうまく動作します。これをonCreateメソッドで置き換えました。 「明るさ」は、シークバーの名前です。これは、当面はledを制御しているためです。これで加速度計のデータをアンドロイドからブルートゥースのクラッシュアプリに送信
brightness.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
try {
btSocket.getOutputStream().write(String.valueOf(progress).getBytes());
} catch (IOException e) { }
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) { }
@Override
public void onStopTrackingTouch(SeekBar seekBar) { }
});
`別の方法
@Override
public void onSensorChanged(SensorEvent event) {
int x = (int)((event.values[0]+9.8)*256/2/9.8);
accelText.setText(" X = " + x);
try {
btSocket.getOutputStream().write(String.valueOf(x).getBytes());
} catch (IOException e) {
msg("error at btSocket");
}
}
そしてもちろんのように私はのonCreateメソッドに適切な宣言を持っている:
sm = (SensorManager)getSystemService(SENSOR_SERVICE);
accelerometer = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
sm.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL);
は罰金コンパイルします。それが実行されるとき、私は "残念なことに、アプリケーションが動作を停止した"メッセージを取得します。私がbtSocket行をコメントアウトすると、すべてが動作します(明らかにメッセージを送信することを除いて)。誰でも私が間違っていることを見てください。大変ありがとうございます。
クラッシュが発生したときのlogcat出力は何ですか? – p2pkit
03-23 15:13:37.158 17363-17363 /? I/dalvikvm:com.blogspot.drcodd.robotcontrol.RobotControl.onSensorChanged(RobotControl.java:141) 03-23 15:13:37.178 17363-17363 /? A/libc:0x000043d3(コード= -6)の致命的なシグナル6(SIGABRT)、スレッド17363(dd.robotcontrol) 03-23 15:13:37.278 26318-26318 /? I/DEBUG:pid:17363、tid:17363、名前:dd.robotcontrol >>> com.blogspot.drcodd.robotcontrol <<< 03-23 15:13:37.548 640-17552 /? W/ActivityManager:強制終了アクティビティcom.blogspot.drcodd.robotcontrol/.RobotControl –