как отправить данные (строку) на сопряженное устройство в Android?

1

Я работаю на bluetooth в первый раз. Я получил список парных устройств. Теперь мое требование - мне нужно отправить некоторые данные (строку) на устройство. Как мне это сделать? Я попытался найти, но не нашел ничего полезного. Может ли кто-нибудь помочь в этом?

  • 0
    Веб-сайт разработчика Android предоставляет отличную документацию и пример кода, чтобы помочь вам сделать это. developer.android.com/guide/topics/connectivity/bluetooth.html Надеюсь, это поможет!
Теги:
bluetooth
android-bluetooth

2 ответа

1
Лучший ответ

Возможно, что-то вроде этого:

DataOutputStream os;

BluetoothAdapter bluetooth = BluetoothAdapter.getDefaultAdapter();

BroadcastReceiver discoveryResult = new BroadcastReceiver() {
    public void onReceive(Context context, Intent intent) {
        String remoteDeviceName = intent.getStringExtra(BluetoothDevice.EXTRA_NAME);
        BluetoothDevice remoteDevice;

        remoteDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);

        Toast.makeText(getApplicationContext(), "Discovered: " + remoteDeviceName + " address " + remoteDevice.getAddress(), Toast.LENGTH_SHORT).show();

        try{
            BluetoothDevice device = bluetooth.getRemoteDevice(remoteDevice.getAddress());

            Method m = device.getClass().getMethod("createRfcommSocket", new Class[] {int.class});

            BluetoothSocket clientSocket =  (BluetoothSocket) m.invoke(device, 1);

            clientSocket.connect();

            os = new DataOutputStream(clientSocket.getOutputStream());

            new clientSock().start();
        } catch (Exception e) {
            e.printStackTrace();
            Log.e("BLUETOOTH", e.getMessage());
        }
    }
};

registerReceiver(discoveryResult, new IntentFilter(BluetoothDevice.ACTION_FOUND));

bluetooth.enable();
if (!bluetooth.isDiscovering()) {
    bluetooth.startDiscovery();
}

public class clientSock extends Thread {
    public void run () {
        try {
            os.writeBytes("anything you want"); // anything you want
            os.flush();
        } catch (Exception e1) {
            e1.printStackTrace();
            return;
        }
    }
}

Вам также потребуется много импорта, например:

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.lang.reflect.Method;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.List;
import java.util.UUID;

import android.os.Bundle;
import android.os.StrictMode;
import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.util.Log;
import android.view.Menu;
import android.widget.Toast;

обратите внимание, что для этого примера кода не все импорт необходим, ваша IDE может помочь вам разобраться в них.

Передайте данные в строке os.writeBytes("anything you want"); // anything you want.

Вам также понадобится Permissions

  • 0
    спасибо, а куда передавать данные? а как к серверу UUID?
  • 0
    обновленный ответ, UUID на самом деле не нужен, я думаю, но это старый код ... примерно год, поэтому я на самом деле не помню, также вам придется выработать другую сторону связи для себя.
Показать ещё 1 комментарий
0

Сайт разработчика Android содержит отличную документацию и пример кода, которые помогут вам сделать именно это. http://developer.android.com/guide/topics/connectivity/bluetooth.html

Надеюсь, что это поможет!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню