Autore Topic: Utilizzare il Bluetooth per inviare/ricevere dati  (Letto 484 volte)

Offline LucaLumetti

  • Nuovo arrivato
  • *
  • Post: 1
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    Ubuntu 14.04
Utilizzare il Bluetooth per inviare/ricevere dati
« il: 10 Maggio 2015, 18:41:16 CEST »
0
Ciao a tutti, sto creando un piccolo gioco e vorrei che sfuttasse il bluetooth per il multiplayer.
Seguendo il tutorial sono riuscito a creare l'xml con una ListView e la classe che richiede l'attivazione del Bluetooth, prende i dispositivi paired e scansiona quelli nelle vicinanze. Fin qui tutto bene.

Non sono riuscito pero' a capire come creare il socket tra i 2 dispositivi e e passare dati attraverso il socket.
Ho provato anche a guardare l'esempio (BluetoothChat) ma non ho capito molto, ho solo capito che bisogna usare un Handler (che neppure qui ho capito come usarlo :'( )
Se qualcuno mi passasse/scrivesse quello che mi manca, anche sono postandomi qualcosa fatto da lui usato in qualche altro progetto gliene sarei grato :)

La classe sopra citata e' questa:

Codice (Java): [Seleziona]
public class Bluetooth extends Activity{
    private BluetoothAdapter btAdapter;
    private Set<BluetoothDevice> pairedDevices;
    ArrayAdapter<String> foundedDevices;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_bluetooth);
        btAdapter = BluetoothAdapter.getDefaultAdapter();

        if (btAdapter == null)
            Toast.makeText(getBaseContext(), "Your device doesn't support bluetooth :(", Toast.LENGTH_SHORT).show();
        if (!btAdapter.isEnabled()) {
            Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
            startActivityForResult(enableBtIntent, 1);
        }
        while(!btAdapter.isEnabled()){
            try{
                TimeUnit.MILLISECONDS.sleep(100);
            } catch(InterruptedException e){
                e.printStackTrace();
            }
        };
        initBt();
    }

    private final BroadcastReceiver btReceiver = new BroadcastReceiver() {
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            if (BluetoothDevice.ACTION_FOUND.equals(action)) {
                BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
                foundedDevices.add(device.getName() + "\n" + device.getAddress());
            }
        }
    };

    public void getPairedDevice(){
        pairedDevices = btAdapter.getBondedDevices();
        if (pairedDevices.size() > 0) {
            for (BluetoothDevice device : pairedDevices) {
                foundedDevices.add(device.getName() + "\n" + device.getAddress());
            }
        }
    }

    public void foundDevices() {
        IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
        registerReceiver(btReceiver, filter);
    }

    public void initBt() {
        foundedDevices = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
        final ListView deviceListView = (ListView) findViewById(R.id.list_devices);
        deviceListView.setAdapter(foundedDevices);
        getPairedDevice();

        Button btnScan = (Button) findViewById(R.id.button_scan);
        btnScan.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                foundDevices();
            }
        });
        deviceListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                String btDevice = (deviceListView.getItemAtPosition(position).toString());
                //Connessione al Device, come?
            }
        });

    }

}