簡體   English   中英

使用藍牙將PC連接到Android手機

[英]Connecting pc to android phone using bluetooth

我想在我的PC和Android手機之間建立藍牙連接,並想從我的PC發送一個字符串到Android手機。 我正在使用Bluecove 2.1.0。 我能夠發現附近的藍牙設備現在我想配對設備並將字符串從pc發送到android手機預先感謝這是我用於搜索設備的代碼

import java.io.OutputStream;
import java.util.ArrayList;

import javax.bluetooth.DataElement;
import javax.bluetooth.DeviceClass;
import javax.bluetooth.DiscoveryAgent;
import javax.bluetooth.DiscoveryListener;
import javax.bluetooth.LocalDevice;
import javax.bluetooth.RemoteDevice;
import javax.bluetooth.ServiceRecord;
import javax.bluetooth.UUID;
import javax.microedition.io.Connector;
import javax.obex.ClientSession;
import javax.obex.HeaderSet;
import javax.obex.Operation;
import javax.obex.ResponseCodes;

    public class MyDiscoveryListener implements DiscoveryListener{

        private static Object lock=new Object();
        public ArrayList<RemoteDevice> devices;

        public MyDiscoveryListener() {
            devices = new ArrayList<RemoteDevice>();
        }

        public static void main(String[] args) {
                    MyDiscoveryListener listener =  new MyDiscoveryListener();

            try{
                LocalDevice localDevice = LocalDevice.getLocalDevice();
                DiscoveryAgent agent = localDevice.getDiscoveryAgent();
                agent.startInquiry(DiscoveryAgent.GIAC, listener);

                try {
                    synchronized(lock){
                        lock.wait();
                    }
                }
                catch (InterruptedException e) {
                    e.printStackTrace();
                    return;
                }


                System.out.println("Device Inquiry Completed. ");

               UUID[] uuidSet = new UUID[1];
                uuidSet[0]=new UUID(0x1105); //OBEX Object Push service

                int[] attrIDs =  new int[] {
                        0x0100 // Service name
                };

                for (RemoteDevice device : listener.devices) {
                    agent.searchServices(
                            attrIDs,uuidSet,device,listener);


                    try {
                        synchronized(lock){
                            lock.wait();
                        }
                    }
                    catch (InterruptedException e) {
                        e.printStackTrace();
                        return;
                    }


                    System.out.println("Service search finished.");
                }

            } catch (Exception e) {
                e.printStackTrace();
            }
        }



        @Override
        public void deviceDiscovered(RemoteDevice btDevice, DeviceClass arg1) {
            String name;
            try {
                name = btDevice.getFriendlyName(false);
            } catch (Exception e) {
                name = btDevice.getBluetoothAddress();
            }

            devices.add(btDevice);
            System.out.println("device found: " + name);

        }

        @Override
        public void inquiryCompleted(int arg0) {
            synchronized(lock){
                lock.notify();
            }
        }

        @Override
        public void serviceSearchCompleted(int arg0, int arg1) {
            synchronized (lock) {
                lock.notify();
            }
        }

        @Override
        public void servicesDiscovered(int transID, ServiceRecord[] servRecord) {
            for (int i = 0; i < servRecord.length; i++) {
                String url = servRecord[i].getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT, false);
                if (url == null) {
                    continue;
                }
                DataElement serviceName = servRecord[i].getAttributeValue(0x0100);
                if (serviceName != null) {
                    System.out.println("service " + serviceName.getValue() + " found " + url);

                    if(serviceName.getValue().equals("OBEX Object Push")){
                        sendMessageToDevice(url);                
                    }
                } else {
                    System.out.println("service found " + url);
                }


            }
        }

        private static void sendMessageToDevice(String serverURL){
            try{
                System.out.println("Connecting to " + serverURL);

                ClientSession clientSession = (ClientSession) Connector.open(serverURL);
                HeaderSet hsConnectReply = clientSession.connect(null);
                if (hsConnectReply.getResponseCode() != ResponseCodes.OBEX_HTTP_OK) {
                    System.out.println("Failed to connect");
                    return;
                }

                HeaderSet hsOperation = clientSession.createHeaderSet();
                hsOperation.setHeader(HeaderSet.NAME, "Hello.txt");
                hsOperation.setHeader(HeaderSet.TYPE, "text");

                //Create PUT Operation
                Operation putOperation = clientSession.put(hsOperation);

                // Send some text to server
                byte data[] = "Hello World !!!".getBytes("iso-8859-1");
                OutputStream os =  (putOperation).openOutputStream();
                os.write(data);
                os.close();

                putOperation.close();

                clientSession.disconnect(null);

                clientSession.close();
            }
            catch (Exception e) {
                e.printStackTrace();
            }
        }




    }

我終於找到了
這是我的github存儲庫的鏈接https://github.com/kgarg1995/bluetoothtesting MyDiscoveryListener.java執行所有操作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM