1

Bluetoothで利用可能なすべてのデバイスを一覧表示し、Androidデバイスから選択したデバイスにファイルを共有する必要があります。以下のコードを使ってみました

 private void sharefile(String deviceAddress,String filePath){
        File f =  new File(filePath);
        BluetoothAdapter objBluetoothAdapter = BluetoothAdapter
                        .getDefaultAdapter();

                BluetoothDevice device = objBluetoothAdapter
                        .getRemoteDevice(deviceAddress);
                Log.v("Device", "" + device.getName());

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

                try {
                    byte[] buffer = new byte[(int) f.length()];
                    FileInputStream fis = new FileInputStream(f);
                    BufferedInputStream bis = new BufferedInputStream(fis);
                    bis.read(buffer, 0, (int) f.length());

                    BluetoothSocket socket = device
                            .createRfcommSocketToServiceRecord(uuid);

                    OutputStream os = socket.getOutputStream();
                    os.write(buffer, 0, buffer.length);
                    os.flush();
                    os.close();
                    socket.close();   
                } catch (SecurityException e) {
                    e.printStackTrace();
                } catch (IllegalArgumentException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }

    }

上記のコードを実行している間、Logcatにトランスポートエンドポイントが接続されていませんというメッセージが表示されます。

06-11 18:26:49.960:W / System.err(9812):java.io.IOException:トランスポートエンドポイントが接続されていません06-11 18:26:49.960:W / System.err(9812):androidで。 bluetooth.BluetoothSocket.writeNative(ネイティブメソッド)06-11 18:26:49.960:W / System.err(9812):android.bluetooth.BluetoothSocket.write(BluetoothSocket.java:346)06-11 18:26:49.960 :W / System.err(9812):android.bluetooth.BluetoothOutputStream.write(BluetoothOutputStream.java:85)06-11 18:26:49.960:W / System.err(9812):com.cit.bt ShareMessageActivity.connectDevice(ShareMessageActivity.java:138)06-11 18:26:49.960:W / System.err(9812):com.cit.bt.ShareMessageActivity.shareFile(ShareMessageActivity.java:83)06-11 18: 26:49.960:W / System.err(9812):com.cit.bt.ShareMessageActivity.onListItemClick(ShareMessageActivity.java:73)06-11 18:26:49.960:W / System.err(9812):at android.app.ListActivity $ 2.onItemClick(ListActivity.java:319)06-11 18:26:49.960:W / System.err(9812):at android.widget.AdapterView.performItemClick(AdapterView.java:284)06 -11 18:26:49.960:W / System.err(9812):android.widget.ListView.performItemClick(ListView.java:3736)06-11 18:26:49.960:W / System.err(9812): at android.widget.AbsListView $ PerformClick.run(AbsListView.java:1974)06-11 18:26:49.960:W / System.err(9812):at android.os.Handler.handleCallback(Handler.java:587) 06-11 18:26:49.960:W / System.err(9812):android.os.Handler.dispatchMessage(Handler.java:92)06-11 18:26:49.960:W / System.err(9812) :at android.os.Looper.loop(Looper.java:130)06-11 18:26:49.960:W / System.err(9812):at android.app.ActivityThread.main(ActivityThread.java:3687)06 -11 18:26:49.960:W / System.err(9812):java.lang.reflectで。Method.invokeNative(Native Method)06-11 18:26:49.960:W / System.err(9812):at java.lang.reflect.Method.invoke(Method.java:507)06-11 18:26:49.960 :W / System.err(9812):com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:867)06-11 18:26:49.960:W / System.err(9812):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)06-11 18:26:49.960:W / System.err(9812):dalvik.system.NativeStart.main(ネイティブメソッド)err(9812):dalvik.system.NativeStart.main(ネイティブメソッド)でerr(9812):dalvik.system.NativeStart.main(ネイティブメソッド)で

また、以下の代替コードを使用してデバイスを接続しようとしましたが、デバイスを接続しましたが、ファイルの転送に失敗しました。

BluetoothDevice hxm = BluetoothAdapter.getDefaultAdapter()
                .getRemoteDevice(deviceAddress);
        Method m;

            m = hxm.getClass().getMethod("createRfcommSocket",
                    new Class[] { int.class });
            BluetoothSocket socket = (BluetoothSocket) m.invoke(hxm,
                    Integer.valueOf(1));
            socket.connect();

Androidマニフェストにも必要な権限を付与しましたが、接続に失敗しました。誰かが私がこの問題を解決するのを手伝ってくれます。

Android市場からのBluetoothファイル転送の背後にあるロジックを誰かに教えてもらえますか。

ありがとう!

4

1 に答える 1

0

そのBluetoothHMXデバイスは、たまたま心拍数モニターにならないのでしょうか。いずれにせよ、良い例を投稿しました(Google Bluetoothチャットの例から引用)。それは彼らの例よりも少し簡素化されており、うまくいけばあなたはそれが役立つと思うでしょう。

http://ww2.cs.fsu.edu/~sposaro/mobile/resources/BeatConnect.zip

于 2012-06-11T13:37:49.187 に答える