2013-02-28 57 views
0

我正在開發一個應用程序,首先我必須搜索可用的藍牙設備並進行連接。我已經完成了這項任務。之後,打開一個新的活動,其中有一個Edittext和一個Button。我開發了下面的代碼。它沒有給出任何輸出。 我使用連接設備的MAC地址傳遞數據。在android中使用藍牙進行數據傳輸

的java文件...

import java.io.IOException; 
import java.io.OutputStream; 
import java.util.UUID; 
import android.annotation.SuppressLint; 
import android.app.Activity; 
import android.bluetooth.BluetoothAdapter; 
import android.bluetooth.BluetoothDevice; 
import android.bluetooth.BluetoothSocket; 
import android.content.ContentValues; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

@SuppressLint("NewApi") 
public class NewMessage extends Activity { 

    Button btn; 
    EditText et; 
    String message1="Hello";//on button click by default 

    BluetoothAdapter mBluetoothAdapter1 = null;; 

    // BluetoothAdapter mBluetoothAdapter; 

    public static String MacAddress; 

    @Override 
    public void onCreate(Bundle mSavedInstanceState) { 
     super.onCreate(mSavedInstanceState); 
     setContentView(R.layout.message); 

     btn = (Button) findViewById(R.id.btn); 
     et = (EditText) findViewById(R.id.et); 
     btn.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       mBluetoothAdapter1 = BluetoothAdapter.getDefaultAdapter(); 

       byte[] toSend=message1.getBytes(); 

       try 
       { 
        final UUID applicationUUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); 
        BluetoothDevice device=mBluetoothAdapter1.getRemoteDevice(MacAddress); 
        BluetoothSocket socket=device.createInsecureRfcommSocketToServiceRecord(applicationUUID); 
        OutputStream mmout=socket.getOutputStream(); 
        mmout.write(toSend); 
        mmout.flush(); 
        mmout.close(); 
        socket.close(); 
        Toast.makeText(getBaseContext(), MacAddress, 10000).show(); 
       } 
       catch (IOException e) 
       { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 




      } 
     }); 

    } 

    /*private void sendDataToPairedDevice(String message ,BluetoothDevice device){  
      byte[] toSend = message.getBytes(); 
      try 
      { 
       BluetoothSocket socket = device.createInsecureRfcommSocketToServiceRecord(applicationUUID); 
       OutputStream mmOutStream = socket.getOutputStream(); 
       mmOutStream.write(toSend); 
       // Your Data is sent to BT connected paired device ENJOY. 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     }*/ 

} 

xml文件

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <EditText 
     android:id="@+id/et" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:ems="10" 
     android:hint="@string/hint"> 

     <requestFocus /> 
    </EditText> 

    <Button 
     android:id="@+id/btn" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/send" /> 

</LinearLayout> 

請你幫我......

這裏是我的代碼,它有問題..

public void onClick(View v) { 
        // TODO Auto-generated method stub 




          mBluetoothAdapter1 = BluetoothAdapter.getDefaultAdapter(); 

          byte[] toSend=message1.getBytes(); 

          try 
          { 

           final UUID applicationUUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); 
           BluetoothDevice device=mBluetoothAdapter1.getRemoteDevice(MacAddress); 
           BluetoothSocket socket=device.createInsecureRfcommSocketToServiceRecord(applicationUUID); 
           OutputStream mmout=socket.getOutputStream(); 
           mmout.write(toSend); 
           mmout.flush(); 
           mmout.close(); 
           socket.close(); 

          } 
          catch (IOException e) 
          { 
           // TODO Auto-generated catch block 
           e.printStackTrace(); 
          } 





       } 
      }); 
+0

嗨,使用這個鏈接http://manojprasaddevelopers.blogspot.in/2012/02/bluetooth-data-transfer-example.html – itsrajesh4uguys 2013-02-28 10:08:35

+0

有這個環節也一試。 http://english.cxem.net/arduino/arduino5.php – itsrajesh4uguys 2013-02-28 10:10:28

+0

也發現了這一點。 http://www.androidcookbook.info/application-development/bluetooth-data-transfer-example.html – itsrajesh4uguys 2013-02-28 10:11:09

回答

1

這不回答你直接提問,但我注意到的一件事是,您有10000作爲您的持續時間參數Toast.makeText(),這是無效的。它只接受Toast.LENGTH_SHORTToast.LENGTH_LONG,這實際上只是0或1.檢查文檔:http://developer.android.com/reference/android/widget/Toast.html

[編輯] 在你的代碼中,我看到的另一個錯誤是你傳遞一個空StringgetRemoteDevice。試着做getRemoteDevice("00001101-0000-1000-8000-00805F9B34FB"),看看會發生什麼。再次閱讀文檔:http://developer.android.com/reference/android/bluetooth/BluetoothAdapter.html#getRemoteDevice(java.lang.String)

+0

@Barney ... It在我的情況下無關緊要...我的實際問題是數據傳輸......但是,感謝您指向我... – 2013-02-28 10:18:45

+0

另外,在您的代碼中,您可以在'MacAddress'上調用'getRemoteDevice',這是一個空的'String '。看我的編輯。 – Barney 2013-02-28 10:24:17

+0

@Barney ...意味着我必須通過UUID而不是Mac地址的連接設備? – 2013-02-28 10:29:04

0

包括連接功能。

BluetoothSocket socket=device.createInsecureRfcommSocketToServiceRecord(applicationUUID); 
socket.connect(); // here 
OutputStream mmout=socket.getOutputStream(); 
相關問題