简体   繁体   English

在Android中使用蓝牙进行数据传输

[英]Data transfer using Bluetooth in android

I am developing an application in which first I have to search available Bluetooth devices and make connection. 我正在开发一个应用程序,首先必须搜索可用的蓝牙设备并建立连接。 I have done this task. 我已经完成了这项任务。 After this, one new Activity opens in which there is one Edittext and one Button. 此后,将打开一个新的活动,其中有一个Edittext和一个Button。 I have developed the below code. 我开发了以下代码。 It is not giving any output. 它没有给出任何输出。 I am passing data using MAC address of connected device. 我正在使用连接设备的MAC地址传递数据。

java file... 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 file 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>

Please do help me... 请帮我...

Here is my code, which has the problem.. 这是我的代码,有问题。

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();
                            }





                }
            });

This doesn't answer your question directly but one thing I am noticing is that you have 10000 as your duration parameter for Toast.makeText() , which is invalid. 这不会直接回答您的问题,但是我要注意的一件事是,您将10000作为Toast.makeText()工期参数,这是无效的。 It only accepts Toast.LENGTH_SHORT or Toast.LENGTH_LONG , which are actually just 0 or 1. Check the docs: http://developer.android.com/reference/android/widget/Toast.html 它仅接受Toast.LENGTH_SHORTToast.LENGTH_LONG ,它们实际上只是0或1。请检查文档: http : //developer.android.com/reference/android/widget/Toast.html

[ EDIT ] Another error I see in your code is you pass an empty String to getRemoteDevice . [ 编辑 ]我在您的代码中看到的另一个错误是您将空String传递给getRemoteDevice Try doing getRemoteDevice("00001101-0000-1000-8000-00805F9B34FB") and see what happens. 尝试做getRemoteDevice("00001101-0000-1000-8000-00805F9B34FB")看看会发生什么。 Again, read the docs: http://developer.android.com/reference/android/bluetooth/BluetoothAdapter.html#getRemoteDevice(java.lang.String) 再次阅读文档: http : //developer.android.com/reference/android/bluetooth/BluetoothAdapter.html#getRemoteDevice(java.lang.String)

Include the connect function. 包括连接功能。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM