Rumah > Soal Jawab > teks badan
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();
}
}
已经可以发送信息到蓝牙了,可是怎么接收数据啊?求助
大家讲道理2017-04-17 17:59:02
自己找了个接受数据的线程……
private class ConnectedThread extends Thread {
private final BluetoothSocket socket;
private final InputStream inputStream;
private final OutputStream outputStream;
public ConnectedThread(BluetoothSocket socket) {
this.socket = socket;
InputStream input = null;
OutputStream output = null;
try {
input = socket.getInputStream();
output = socket.getOutputStream();
} catch (IOException e) {
e.printStackTrace();
}
this.inputStream = input;
this.outputStream = output;
}
public void run() {
byte[] buff = new byte[1024];
int bytes;
while (true) {
try {
bytes = inputStream.read(buff);
String str = new String(buff, "ISO-8859-1");
str = str.substring(0, bytes);
Log.e("recv", str);
Message message=handler.obtainMessage();
message.obj=str;
handler.sendMessage(message);
} catch (IOException e) {
e.printStackTrace();
break;
}
}
}
public void write(byte[] bytes) {
try {
outputStream.write(bytes);
} catch (IOException e) {
e.printStackTrace();
}
}
public void cancel() {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
PHPz2017-04-17 17:59:02
感觉你的写法有点奇怪……
mBluetoothGattCallback 是 BluetoothGattCallback的实现,用于回调连接状态和传输数据,具体你可以百度一下或看官方文档