package myapplication.com.myapplicationble;
import android.app.Service;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothServerSocket;
import android.bluetooth.BluetoothSocket;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.PopupMenu;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.Toast;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.UUID;
public class MainActivity extends AppCompatActivity {
private BluetoothAdapter BA;
BluetoothServerSocket mmServerSocket;
private static String address = "20:16:09:26:81:80"; // <==应填写蓝牙串口模块的蓝牙地址。
private BluetoothSocket btSocket = null;
private OutputStream outStream = null;
public InputStream inStream = null;
EditText editText;
TextView textView;
Button button, button1;
private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
/**
* 连接蓝牙
* **/
public void connect() {
BA = BluetoothAdapter.getDefaultAdapter();
BluetoothDevice device = BA.getRemoteDevice(address);
// pairedDevices = BA.getBondedDevices();
try {
btSocket = device.createRfcommSocketToServiceRecord(MY_UUID);
new ReceiveDatas(btSocket).start();
} catch (IOException e) {
}
BA.cancelDiscovery();
try {
btSocket.connect();
String s="sm\n";
outStream = btSocket.getOutputStream();
outStream.write(s.getBytes());
//outStream.write(0x41);
inStream = btSocket.getInputStream();
Jieshou();
// System.out.println("**" + inStream.toString());
// System.out.println("**" + inStream.read());
// int x = inStream.read();
//outStream.write(x+1);
// System.out.println("****--"+x);
} catch (IOException e) {
}
try {
// btSocket.close();
} catch (Exception e2) {
// Log .e(TAG,"ON RESUME: Unable to close socket during connection failure", e2);
}
}
public void initView() {
editText = (EditText) findViewById(R.id.edit);
textView = (TextView) findViewById(R.id.textView);
button = (Button) findViewById(R.id.button);
button1 = (Button) findViewById(R.id.button1);
BA = BluetoothAdapter.getDefaultAdapter();
/**
* 连接蓝牙
* */
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("***11");
as();
}
});
/**
* 发送信息 可以发送了
* **/
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String s = editText.getText().toString().trim();
try {
outStream = btSocket.getOutputStream();
inStream=btSocket.getInputStream();
outStream.write(s.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
/**
*
* 连接蓝牙
* **/
public void as() {
new AsyncTask() {
@Override
protected String doInBackground(Object[] params) {
connect();
return null;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onPostExecute(Object o) {
super.onPostExecute(o);
Toast.makeText(getApplicationContext(), "2", Toast.LENGTH_SHORT).show();
}
}.execute();
}
/**
*
* */
public void Jieshou() {
new Thread(new Runnable() {
@Override
public void run() {
while(true){
ByteArrayOutputStream byteArrayOutputStream=null;
byteArrayOutputStream = new ByteArrayOutputStream();
try {
inStream=btSocket.getInputStream();
} catch (IOException e) {
e.printStackTrace();
}
byte[] buffer = new byte[1024];// 缓冲数据流
int temp = 0;
// while( (temp = inStream.read(buffer)) != -1) {
// os.write(buffer, 0, temp);
byteArrayOutputStream.write(buffer, 0, temp);
// }
System.out.println("*shuju*"+byteArrayOutputStream.toByteArray().toString());
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}
}
已经可以发送信息到蓝牙了,可是怎么接收数据啊?求助
J'ai trouvé un fil de discussion pour accepter les données...
J'ai l'impression que ta façon d'écrire est un peu étrange...
mBluetoothGattCallback est l'implémentation de BluetoothGattCallback, qui est utilisée pour rappeler l'état de la connexion et transmettre des données. Pour plus de détails, vous pouvez effectuer une recherche sur Baidu ou lire la documentation officielle
.