java– 连接到Bluegiga WT-12的Android蓝牙聊天应用程序

java– 连接到Bluegiga WT-12的Android蓝牙聊天应用程序,第1张

概述我想使用我们使用蓝牙聊天开源代码的蓝牙连接,但它在我的Eclipse上不起作用,因此经过一些更改后,它才能正常工作.现在我可以与Bluegiga WT-12聊天,通过串行电缆连接到PC. Bluegiga WT-12与BG Term连接(就像Hyperterminal一样).只是想分享!我希望它能为开发人员提供相同的应用程序提供一些帮助. BlueChat与

我想使用我们使用蓝牙聊天开源代码的蓝牙连接,但它在我的Eclipse上不起作用,因此经过一些更改后,它才能正常工作.现在我可以与bluegiga WT-12聊天,通过串行电缆连接到PC. bluegiga WT-12与BG Term连接(就像hyperterminal一样).

只是想分享!我希望它能为开发人员提供相同的应用程序提供一些帮助. BlueChat与可用的相同.

这是BluetoothChatService代码编辑:

 package com.example.androID.BluetoothChat;public class BluetoothChatService {// DeBUGgingprivate static final String TAG = "BluetoothChatService";private static final boolean D = true;// name for the SDP record when creating server socketprivate static final String name = "BluetoothChat";// Unique UUID for this applicationprivate static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");// Member fIEldsprivate final BluetoothAdapter mAdapter;private final Handler mHandler;  private AcceptThread mAcceptThread;private ConnectThread mConnectThread;private ConnectedThread mConnectedThread;private int mState;// Constants that indicate the current connection statepublic static final int STATE_NONE = 0;       // we're doing nothingpublic static final int STATE_ListEN = 1;     // Now Listening for incoming connectionspublic static final int STATE_CONNECTING = 2; // Now initiating an outgoing connectionpublic static final int STATE_CONNECTED = 3;  // Now connected to a remote device/** * Constructor. Prepares a new BluetoothChat session. * @param context  The UI Activity Context * @param handler  A Handler to send messages back to the UI Activity */public BluetoothChatService(Context context,Handler handler) {    mAdapter = BluetoothAdapter.getDefaultAdapter();    mState = STATE_NONE;    mHandler = handler;}/** * Set the current state of the chat connection * @param state  An integer defining the current connection state */private synchronized voID setState(int state) {    if (D) Log.d(TAG,"setState() " + mState + " -> " + state);    mState = state;    // Give the new state to the Handler so the UI Activity can update    mHandler.obtainMessage(BluetoothChat.MESSAGE_STATE_CHANGE,state,-1).sendToTarget();}/** * Return the current connection state. */public synchronized int getState() {    return mState;}/** * Start the chat service. Specifically start AcceptThread to begin a * session in Listening (server) mode. Called by the Activity onResume() */public synchronized voID start() {    if (D) Log.d(TAG,"start");    // Cancel any thread attempting to make a connection    if (mConnectThread != null) {mConnectThread.cancel(); mConnectThread = null;}    // Cancel any thread currently running a connection    if (mConnectedThread != null) {mConnectedThread.cancel(); mConnectedThread = null;}    // Start the thread to Listen on a BluetoothServerSocket    if (mAcceptThread == null) {        mAcceptThread = new AcceptThread();        mAcceptThread.start();    }    setState(STATE_ListEN);}/** * Start the ConnectThread to initiate a connection to a remote device. * @param device  The BluetoothDevice to connect */public synchronized voID connect(BluetoothDevice device) {    if (D) Log.d(TAG,"connect to: " + device);    // Cancel any thread attempting to make a connection    if (mState == STATE_CONNECTING) {        if (mConnectThread != null) {mConnectThread.cancel(); mConnectThread = null;}    }    // Cancel any thread currently running a connection    if (mConnectedThread != null) {mConnectedThread.cancel(); mConnectedThread = null;}    // Start the thread to connect with the given device    mConnectThread = new ConnectThread(device);    mConnectThread.start();    setState(STATE_CONNECTING);}/** * Start the ConnectedThread to begin managing a Bluetooth connection * @param socket  The BluetoothSocket on which the connection was made * @param device  The BluetoothDevice that has been connected */public synchronized voID connected(BluetoothSocket socket,BluetoothDevice device) {    if (D) Log.d(TAG,"connected");    // Cancel the thread that completed the connection    if (mConnectThread != null) {mConnectThread.cancel(); mConnectThread = null;}    // Cancel any thread currently running a connection    if (mConnectedThread != null) {mConnectedThread.cancel(); mConnectedThread = null;}    // Cancel the accept thread because we only want to connect to one device    if (mAcceptThread != null) {mAcceptThread.cancel(); mAcceptThread = null;}    // Start the thread to manage the connection and perform transmissions    mConnectedThread = new ConnectedThread(socket);    mConnectedThread.start();    // Send the name of the connected device back to the UI Activity    Message msg = mHandler.obtainMessage(BluetoothChat.MESSAGE_DEVICE_name);    Bundle bundle = new Bundle();    bundle.putString(BluetoothChat.DEVICE_name,device.getname());    msg.setData(bundle);    mHandler.sendMessage(msg);    setState(STATE_CONNECTED);}/** * Stop all threads */public synchronized voID stop() {    if (D) Log.d(TAG,"stop");    if (mConnectThread != null) {mConnectThread.cancel(); mConnectThread = null;}    if (mConnectedThread != null) {mConnectedThread.cancel(); mConnectedThread = null;}    if (mAcceptThread != null) {mAcceptThread.cancel(); mAcceptThread = null;}    setState(STATE_NONE);}/** * Write to the ConnectedThread in an unsynchronized manner * @param out The bytes to write * @see ConnectedThread#write(byte[]) */public voID write(byte[] out) {    // Create temporary object    ConnectedThread r;    // Synchronize a copy of the ConnectedThread    synchronized (this) {        if (mState != STATE_CONNECTED) return;        r = mConnectedThread;    }    // Perform the write unsynchronized    r.write(out);}/** * Indicate that the connection attempt Failed and notify the UI Activity. */private voID connectionFailed() {    setState(STATE_ListEN);    // Send a failure message back to the Activity    Message msg = mHandler.obtainMessage(BluetoothChat.MESSAGE_TOAST);    Bundle bundle = new Bundle();    bundle.putString(BluetoothChat.TOAST,"Unable to connect device");    msg.setData(bundle);    mHandler.sendMessage(msg);}/** * Indicate that the connection was lost and notify the UI Activity. */private voID connectionLost() {    setState(STATE_ListEN);    // Send a failure message back to the Activity    Message msg = mHandler.obtainMessage(BluetoothChat.MESSAGE_TOAST);    Bundle bundle = new Bundle();    bundle.putString(BluetoothChat.TOAST,"Device connection was lost");    msg.setData(bundle);    mHandler.sendMessage(msg);}/** * This thread runs while Listening for incoming connections. It behaves * like a server-sIDe clIEnt. It runs until a connection is accepted * (or until cancelled). */private class AcceptThread extends Thread {    // The local server socket    private final BluetoothServerSocket mmServerSocket;    public AcceptThread() {        BluetoothServerSocket tmp = null;        // Create a new Listening server socket        try {            tmp = mAdapter.ListenUsingRfcommWithServiceRecord(name,MY_UUID);        } catch (IOException e) {            Log.e(TAG,"Listen() Failed",e);        }        mmServerSocket = tmp;    }    public voID run() {        if (D) Log.d(TAG,"BEGIN mAcceptThread" + this);        setname("AcceptThread");        BluetoothSocket socket = null;        // Listen to the server socket if we're not connected        while (mState != STATE_CONNECTED) {            try {                // This is a blocking call and will only return on a                // successful connection or an exception                socket = mmServerSocket.accept();            } catch (IOException e) {                Log.e(TAG,"accept() Failed",e);                break;            }            // If a connection was accepted            if (socket != null) {                synchronized (BluetoothChatService.this) {                    switch (mState) {                    case STATE_ListEN:                    case STATE_CONNECTING:                        // Situation normal. Start the connected thread.                        connected(socket,socket.getRemoteDevice());                        break;                    case STATE_NONE:                    case STATE_CONNECTED:                        // Either not ready or already connected. Terminate new socket.                        try {                            socket.close();                        } catch (IOException e) {                            Log.e(TAG,"Could not close unwanted socket",e);                        }                        break;                    }                }            }        }        if (D) Log.i(TAG,"END mAcceptThread");    }    public voID cancel() {        if (D) Log.d(TAG,"cancel " + this);        try {            mmServerSocket.close();        } catch (IOException e) {            Log.e(TAG,"close() of server Failed",e);        }    }}/** * This thread runs while attempting to make an outgoing connection * with a device. It runs straight through; the connection either * succeeds or fails. */private class ConnectThread extends Thread {    private final BluetoothSocket mmSocket;    private final BluetoothDevice mmDevice;    public ConnectThread(BluetoothDevice device) {        mmDevice = device;        BluetoothSocket tmp = null;        // Get a BluetoothSocket for a connection with the        // given BluetoothDevice        try {            tmp = device.createRfcommSocketToServiceRecord(MY_UUID);        } catch (IOException e) {            Log.e(TAG,"create() Failed",e);        }        mmSocket = tmp;    }    public voID run() {        Log.i(TAG,"BEGIN mConnectThread");        setname("ConnectThread");        // Always cancel discovery because it will slow down a connection        mAdapter.canceldiscovery();        // Make a connection to the BluetoothSocket        try {            // This is a blocking call and will only return on a            // successful connection or an exception            mmSocket.connect();        } catch (IOException e) {            connectionFailed();            // Close the socket            try {                mmSocket.close();            } catch (IOException e2) {                Log.e(TAG,"unable to close() socket during connection failure",e2);            }            // Start the service over to restart Listening mode            BluetoothChatService.this.start();            return;        }        // reset the ConnectThread because we're done        synchronized (BluetoothChatService.this) {            mConnectThread = null;        }        // Start the connected thread        connected(mmSocket,mmDevice);    }    public voID cancel() {        try {            mmSocket.close();        } catch (IOException e) {            Log.e(TAG,"close() of connect socket Failed",e);        }    }}/** * This thread runs during a connection with a remote device. * It handles all incoming and outgoing transmissions. */private class ConnectedThread extends Thread {    private final BluetoothSocket mmSocket;    private final inputStream mmInStream;    private final OutputStream mmOutStream;    public ConnectedThread(BluetoothSocket socket) {        Log.d(TAG,"create ConnectedThread");        mmSocket = socket;        inputStream tmpIn = null;        OutputStream tmpOut = null;        // Get the BluetoothSocket input and output streams        try {            tmpIn = socket.getinputStream();            tmpOut = socket.getoutputStream();        } catch (IOException e) {            Log.e(TAG,"temp sockets not created",e);        }        mmInStream = tmpIn;        mmOutStream = tmpOut;    }    public voID run() {        Log.i(TAG,"BEGIN mConnectedThread");        byte[] buffer = new byte[1024];        int bytes;        // Keep Listening to the inputStream while connected        while (true) {            try {                // Read from the inputStream                bytes = mmInStream.read(buffer);                // Send the obtained bytes to the UI Activity                mHandler.obtainMessage(BluetoothChat.MESSAGE_READ,bytes,-1,buffer)                        .sendToTarget();            } catch (IOException e) {                Log.e(TAG,"disconnected",e);                connectionLost();                break;            }        }    }    /**     * Write to the connected OutStream.     * @param buffer  The bytes to write     */    public voID write(byte[] buffer) {        try {            mmOutStream.write(buffer);            // Share the sent message back to the UI Activity            mHandler.obtainMessage(BluetoothChat.MESSAGE_WRITE,buffer)                    .sendToTarget();        } catch (IOException e) {            Log.e(TAG,"Exception during write",e);        }    }    public voID cancel() {        try {            mmSocket.close();        } catch (IOException e) {            Log.e(TAG,e);        }    }}

}

设备列表活动代码在这里:

    package com.example.androID.BluetoothChat;/** * This Activity appears as a dialog. It Lists any paired devices and * devices detected in the area after discovery. When a device is chosen * by the user,the MAC address of the device is sent back to the parent * Activity in the result Intent. */public class DeviceListActivity extends Activity {// DeBUGgingprivate static final String TAG = "DeviceListActivity";private static final boolean D = true;// Return Intent extrapublic static String EXTRA_DEVICE_ADDRESS = "device_address";// Member fIEldsprivate BluetoothAdapter mBtAdapter;private ArrayAdapter

}

res文件夹可以原样复制.代码将起作用.

最佳答案这就是答案!

我已经更换了这条线

private static final UUID MY_UUID = UUID.fromString("fa87c0d0-afac-11de-8a39-0800200c9a66");

private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");

现在它工作!!!

非常感谢!

总结

以上是内存溢出为你收集整理的java – 连接到Bluegiga WT-12的Android蓝牙聊天应用程序全部内容,希望文章能够帮你解决java – 连接到Bluegiga WT-12的Android蓝牙聊天应用程序所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1139812.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)