Autore Topic: Bluetooth SPP Library  (Letto 828 volte)

Offline davix10

  • Utente normale
  • ***
  • Post: 159
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Lg G4
  • Play Store ID:
    davix10
  • Sistema operativo:
    Windows 10
Bluetooth SPP Library
« il: 22 Ottobre 2014, 11:34:45 CEST »
0
Salve a tutti, ho provato a scaricare questa libreria e ad utilizzare il programma di esempio che è questo:

Codice (Java): [Seleziona]
import android.os.Bundle;
import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
import app.akexorcist.bluetoothspp.BluetoothSPP;
import app.akexorcist.bluetoothspp.BluetoothSPP.BluetoothConnectionListener;
import app.akexorcist.bluetoothspp.BluetoothSPP.OnDataReceivedListener;
import app.akexorcist.bluetoothspp.BluetoothState;
import app.akexorcist.bluetoothspp.DeviceList;

public class Main extends Activity {
        BluetoothSPP bt;
       
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
               
                bt = new BluetoothSPP(this);

                if(!bt.isBluetoothAvailable()) {
                        Toast.makeText(getApplicationContext()
                                        , "Bluetooth is not available"
                                        , Toast.LENGTH_SHORT).show();
            finish();
                }
               
                bt.setOnDataReceivedListener(new OnDataReceivedListener() {
                        public void onDataReceived(byte[] data, String message) {
                                Toast.makeText(Main.this, message, Toast.LENGTH_SHORT).show();
                        }
                });
               
                bt.setBluetoothConnectionListener(new BluetoothConnectionListener() {
                        public void onDeviceConnected(String name, String address) {
                                Toast.makeText(getApplicationContext()
                                                , "Connected to " + name + "\n" + address
                                                , Toast.LENGTH_SHORT).show();
                        }

                        public void onDeviceDisconnected() {
                                Toast.makeText(getApplicationContext()
                                                , "Connection lost", Toast.LENGTH_SHORT).show();
                        }

                        public void onDeviceConnectionFailed() {
                                Toast.makeText(getApplicationContext()
                                                , "Unable to connect", Toast.LENGTH_SHORT).show();
                        }
                });
               
                Button btnConnect = (Button)findViewById(R.id.btnConnect);
                btnConnect.setOnClickListener(new OnClickListener(){
                public void onClick(View v){
                        if(bt.getServiceState() == BluetoothState.STATE_CONNECTED) {
                                bt.disconnect();
                        } else {
                    Intent intent = new Intent(getApplicationContext(), DeviceList.class);
                    startActivityForResult(intent, BluetoothState.REQUEST_CONNECT_DEVICE);
                        }
                }
        });
        }
       
        public void onDestroy() {
        super.onDestroy();
        bt.stopService();
    }
       
        public void onStart() {
        super.onStart();
        if (!bt.isBluetoothEnabled()) {
                Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
            startActivityForResult(intent, BluetoothState.REQUEST_ENABLE_BT);
        } else {
            if(!bt.isServiceAvailable()) {
                bt.setupService();
                bt.startService(BluetoothState.DEVICE_ANDROID);
                setup();
            }
        }
    }
       
        public void setup() {
                Button btnSend = (Button)findViewById(R.id.btnSend);
                btnSend.setOnClickListener(new OnClickListener(){
                public void onClick(View v){
                        bt.send("Text", true);
                }
        });
        }
       
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
                if(requestCode == BluetoothState.REQUEST_CONNECT_DEVICE) {
                        if(resultCode == Activity.RESULT_OK)
                bt.connect(data);
                } else if(requestCode == BluetoothState.REQUEST_ENABLE_BT) {
            if(resultCode == Activity.RESULT_OK) {
                bt.setupService();
                bt.startService(BluetoothState.DEVICE_ANDROID);
                setup();
            } else {
                Toast.makeText(getApplicationContext()
                                , "Bluetooth was not enabled."
                                , Toast.LENGTH_SHORT).show();
                finish();
            }
        }
    }
}

Purtroppo il mio strumento invia dati ad una velocità di 1ms e l'app non riesce a stargli dietro, c'è un modo per fargli leggere i dati con maggiore velocità?
Grazie.

Post unito: 23 Ottobre 2014, 11:27:46 CEST
Ho provato a modificare in questo modo, anche perchè per un attimo ricevo qualcosa ma poi l'app va in crash nella conversione tra byte e int:

Codice (Java): [Seleziona]
public class MainActivity extends Activity {
        BluetoothSPP bt;
        byte prova = (byte) 243; //188 e 168  187
        TextView text;
        int a;
        int valore_a_16;
        int valore_a_16_2;
        int valore_a_16_3;
        int valore_a_16_4;

        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                text = (TextView)findViewById(R.id.textView1);
                text.setText("");

                bt = new BluetoothSPP(this);

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

                bt.setOnDataReceivedListener(new OnDataReceivedListener() {
                        public void onDataReceived(byte[] data, String message) {
                                //Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT).show();
                                byte[] readBuf = (byte[]) data;


                                valore_a_16 = ((readBuf[1] & 0xFF) << 8) | (readBuf[0] & 0xFF); // L'ERRORE E' QUI
                                valore_a_16_2 = ((readBuf[3] & 0xFF) << 8) | (readBuf[2] & 0xFF); // L'ERRORE E' QUI
                                valore_a_16_3 = ((readBuf[5] & 0xFF) << 8) | (readBuf[4] & 0xFF); // L'ERRORE E' QUI
                                valore_a_16_4 = ((readBuf[7] & 0xFF) << 8) | (readBuf[6] & 0xFF); // L'ERRORE E' QUI




                                a++;
                                String str = String.valueOf(valore_a_16);

                                Log.d("byte", message);
                                text.setText(message);
                        }
                });

                bt.setBluetoothConnectionListener(new BluetoothConnectionListener() {
                        public void onDeviceConnected(String name, String address) {
                                Toast.makeText(getApplicationContext()
                                                , "Connected to " + name + "\n" + address
                                                , Toast.LENGTH_SHORT).show();
                                bt.send(new byte[] {prova}, false);
                        }

                        public void onDeviceDisconnected() {
                                Toast.makeText(getApplicationContext()
                                                , "Connection lost", Toast.LENGTH_SHORT).show();
                        }

                        public void onDeviceConnectionFailed() {
                                Toast.makeText(getApplicationContext()
                                                , "Unable to connect", Toast.LENGTH_SHORT).show();
                        }
                });

                Button btnConnect = (Button)findViewById(R.id.btnConnect);
                btnConnect.setOnClickListener(new OnClickListener(){
                        public void onClick(View v){
                                if(bt.getServiceState() == BluetoothState.STATE_CONNECTED) {
                                        bt.disconnect();
                                } else {
                                        Intent intent = new Intent(getApplicationContext(), DeviceList.class);
                                        startActivityForResult(intent, BluetoothState.REQUEST_CONNECT_DEVICE);
                                }
                        }
                });
        }

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

        public void onStart() {
                super.onStart();
                if (!bt.isBluetoothEnabled()) {
                        Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
                        startActivityForResult(intent, BluetoothState.REQUEST_ENABLE_BT);
                } else {
                        if(!bt.isServiceAvailable()) {
                                bt.setupService();
                                bt.startService(BluetoothState.DEVICE_OTHER);
                                setup();
                        }
                }
        }

        public void setup() {
                Button btnSend = (Button)findViewById(R.id.btnSend);
                btnSend.setOnClickListener(new OnClickListener(){
                        public void onClick(View v){
                                //      bt.send("Text", true);
                        }
                });
        }

        public void onActivityResult(int requestCode, int resultCode, Intent data) {
                if(requestCode == BluetoothState.REQUEST_CONNECT_DEVICE) {
                        if(resultCode == Activity.RESULT_OK)
                                bt.connect(data);
                } else if(requestCode == BluetoothState.REQUEST_ENABLE_BT) {
                        if(resultCode == Activity.RESULT_OK) {
                                bt.setupService();
                                bt.startService(BluetoothState.DEVICE_OTHER);
                                setup();
                        } else {
                                Toast.makeText(getApplicationContext()
                                                , "Bluetooth was not enabled."
                                                , Toast.LENGTH_SHORT).show();
                                finish();
                        }
                }
        }
}
Qualcuno può spiegarmi il motivo?
« Ultima modifica: 23 Ottobre 2014, 11:27:46 CEST da davix10, Reason: Merged DoublePost »