Как добавить автоматическое подключение Bluetooth к текущему коду - PullRequest
0 голосов
/ 04 сентября 2018

В настоящее время я работаю над созданием приложения, которое управляет реле. Это реле управляет светом в моем доме, используя Arduino Pro и реле, и подключается по телефону через HC-05. До сих пор я был в состоянии использовать этот текущий код для управления светом (как во всем работает, включает и выключает свет). Однако я пытаюсь внедрить «автоматическое подключение» в код Java, чтобы приложение ... попав в зону действия HC-05 ... автоматически подключилось к моему телефону и загорелся индикатор. Каждый раз, когда я пытаюсь добавить любой тип кода автоматического подключения или Gitt, кажется, что ничего не работает правильно. Кроме того, мне трудно понять, что добавить, когда я читаю заметки разработчиков. Может кто-нибудь, пожалуйста, помогите мне добавить правильный код к этому, а также объяснить, что происходит, чтобы я мог учиться и «пытаться» понять, что вы сделали. Спасибо.

Вот мой нынешний Java:

package com.example.android.labbluetooth;

import android.app.Activity;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import app.akexorcist.bluetotohspp.library.BluetoothSPP;
import app.akexorcist.bluetotohspp.library.BluetoothState;
import app.akexorcist.bluetotohspp.library.DeviceList;

public class MainActivity extends AppCompatActivity {

    final String ON = "1";
    final String OFF = "0";

    BluetoothSPP bluetooth;

    Button connect;
    Button on;
    Button off;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        bluetooth = new BluetoothSPP(this);

        connect = (Button) findViewById(R.id.connect);
        on = (Button) findViewById(R.id.on);
        off = (Button) findViewById(R.id.off);

        if (!bluetooth.isBluetoothAvailable()) {
            Toast.makeText(getApplicationContext(), "Bluetooth is not available", Toast.LENGTH_SHORT).show();
            finish();
        }

        bluetooth.setBluetoothConnectionListener(new BluetoothSPP.BluetoothConnectionListener() {
            public void onDeviceConnected(String name, String address) {
                connect.setText("Connected to " + name);
                if (connect == connect){
                    bluetooth.send(ON, true);}
            }

            public void onDeviceDisconnected() {
                connect.setText("Connection lost");
            }

            public void onDeviceConnectionFailed() {
                connect.setText("Unable to connect");
            }
        });
    connect.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (bluetooth.getServiceState() == BluetoothState.STATE_CONNECTED) {
                bluetooth.disconnect();
            } else {
                Intent intent = new Intent(getApplicationContext(), DeviceList.class);
                startActivityForResult(intent, BluetoothState.REQUEST_CONNECT_DEVICE);
            }
        }
    });

    on.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            bluetooth.send(ON, true);
        }
    });

    off.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            bluetooth.send(OFF, true);
        }
    });

}

public void onStart() {
    super.onStart();
    if (!bluetooth.isBluetoothEnabled()) {
        bluetooth.enable();
    } else {
        if (!bluetooth.isServiceAvailable()) {
            bluetooth.setupService();
            bluetooth.startService(BluetoothState.DEVICE_OTHER);
        }
    }
}


public void onDestroy() {
    super.onDestroy();
    bluetooth.stopService();
}

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == BluetoothState.REQUEST_CONNECT_DEVICE) {
        if (resultCode == Activity.RESULT_OK)
            bluetooth.connect(data);
    } else if (requestCode == BluetoothState.REQUEST_ENABLE_BT) {
        if (resultCode == Activity.RESULT_OK) {
            bluetooth.setupService();
        } else {
            Toast.makeText(getApplicationContext()
                    , "Bluetooth was not enabled."
                    , Toast.LENGTH_SHORT).show();
            finish();
        }
    }
}

}

и мой текущий XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <Button
        android:id="@+id/connect"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Connect" />

    <Button
        android:id="@+id/on"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="LED ON" />

    <Button
        android:id="@+id/off"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="LED OFF" />

</LinearLayout>
...