0
我想通過我自己的android工作室應用程序使用加速計控制一輛遙控車。嘗試通過藍牙發送命令時藍牙連接失敗
我設法讓應用程序通過按鈕調用按鈕時按下按鈕。
我想加速度計做同樣的事情,說id的x值小於這個,然後調用函數。但我不能連接到藍牙第二我包括我的前功能或安迪功能發送藍牙命令內的if語句。
如果連接不成功「連接失敗,是否爲SPP藍牙?請重試」。我不斷收到這條消息
這是我有if語句的加速度計代碼的一部分。
@Override
public void onSensorChanged(SensorEvent event) {
// clean current values
displayCleanValues();
// display the current x,y,z accelerometer values
displayCurrentValues();
// display the max x,y,z accelerometer values
displayMaxValues();
// get the change of the x,y,z values of the accelerometer
deltaX =(lastX - event.values[0]);
deltaY = (lastY - event.values[1]);
deltaZ = (lastZ - event.values[2]);
// if the change is below 2, it is just plain noise
if (deltaX < 2)
DownArrow.setVisibility(View.VISIBLE);
else
DownArrow.setVisibility(View.INVISIBLE);
if ((deltaZ > vibrateThreshold) || (deltaY > vibrateThreshold) || (deltaZ > vibrateThreshold)) {
v.vibrate(50);
}
if (deltaX > -4) {
UpArrow.setVisibility(View.VISIBLE);
goForward();
}
if (deltaX < -4)
UpArrow.setVisibility(View.INVISIBLE);
if (deltaX < -7)
DownArrow.setVisibility(View.VISIBLE);
goBackward();
if (deltaX > -7)
DownArrow.setVisibility(View.INVISIBLE);
}
這是我調用的函數,它發送藍牙命令。
private void goForward()
{
if (btSocket!=null)
{
try
{
btSocket.getOutputStream().write("F".toString().getBytes());
}
catch (IOException e)
{
msg("Error");
}
}
}
private void goBackward()
{
if (btSocket!=null)
{
try
{
btSocket.getOutputStream().write("B".toString().getBytes());
}
catch (IOException e)
{
msg("Error");
}
}
}
這是藍牙代碼
@Override
protected void onPostExecute(Void result) //after the doInBackground, it checks if everything went fine
{
super.onPostExecute(result);
if (!ConnectSuccess)
{
msg("Connection Failed. Is it a SPP Bluetooth? Try again.");
finish();
}
else
{
msg("Connected.");
isBtConnected = true;
}
progress.dismiss();
}
我做同樣的在我的按鈕視圖,它工作正常。
btnUp.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
btnUp.setBackgroundResource(R.drawable.button_arrow_green_up_select);
goForward();
return true;
}
if (event.getAction() == MotionEvent.ACTION_UP) {
btnUp.setBackgroundResource(R.drawable.button_arrow_green_up);
Stop();
}
return false;
}
});
爲什麼它一直失敗?
那麼數據的通信類型是什麼?SPP或BLE? – ifeegoo
我使用HC 06藍牙模塊,我相信它是一個BLE。我的按鈕模式工作得很好。只有當我嘗試在加速計的if語句內發送命令時,它纔會失敗。 – Tkal
嗨,對不起,我正在使用SPP。 – Tkal