android spp服务,使用Android设备通过SPP通过蓝牙发送数据

我正在尝试将数据从

Android设备发送到支持串行端口配置文件(SPP)的远程蓝牙设备.我注意到每按一次按钮后打开和关闭一个插座,它就太慢了.应该在Run()和Onclick()函数中执行哪些套接字命令?以下是执行蓝牙IO的类:

public class Selecteddevice extends Activity implements OnClickListener {

private static final String TAG = "THINBTCLIENT";

private BluetoothAdapter mBluetoothAdapter = null;

private BluetoothDevice device;

private BluetoothSocket btSocket = null;

private OutputStream outStream = null;

private static final UUID MY_UUID =

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

public static String address;

@Override

public void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

this.setContentView(R.layout.selecteddevice);

findViewById(R.id.toggleButton1).setOnClickListener(this);

findViewById(R.id.toggleButton2).setOnClickListener(this);

findViewById(R.id.toggleButton3).setOnClickListener(this);

}

@Override

public void onStart() {

super.onStart();

String address = getIntent().getStringExtra("address");

TextView tv1 = (TextView) findViewById(R.id.textView_address);

tv1.setText(" DEVICE ADDRESS: " + address);

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

device = mBluetoothAdapter.getRemoteDevice(address);

run();

}

public void run(){

mBluetoothAdapter.cancelDiscovery();

try {

btSocket = device.createRfcommSocketToServiceRecord(MY_UUID);

} catch (IOException e)

{

Log.e(TAG, "ON START: Socket creation failed.", e);

}

try {

btSocket.connect();

} catch (IOException e)

{

Log.e(TAG, "sendTestByte: Socket connection failed.", e);

}

}

public void sendTestString(String s){

try {

outStream = btSocket.getOutputStream();

} catch (IOException e)

{

Log.e(TAG, "sendTestByte: OutputStream creation failed.", e);

}

try {

outStream.write(s.getBytes());

Log.d(TAG, "sendTestByte: OutputStream write succeeded.");

} catch (IOException e)

{

Log.e(TAG, "sendTestByte: OutputStream writefailed.", e);

}

}

public void onClick(View v){

switch(v.getId())

{

case R.id.toggleButton1:

this.sendTestString("1");

break;

case R.id.toggleButton2:

this.sendTestString("2");

break;

case R.id.toggleButton3:

this.sendTestString("3");

break;

}

}

@Override

public void onPause() {

super.onPause();

if (outStream != null) {

try {

outStream.flush();

} catch (IOException e5)

{

Log.e(TAG, "ON PAUSE: Couldn't flush output stream.", e5);

}

}

try {

btSocket.close();

} catch (IOException e6)

{

Log.e(TAG, "ON PAUSE: Unable to close socket.", e6);

}

}

@Override

public void onStop() {

super.onStop();

}

@Override

public void onDestroy() {

super.onDestroy();

}

}

与错误消息配对后我的程序崩溃:

07-27 13:00:57.483: E/THINBTCLIENT(7855): sendTestByte: OutputStream writefailed.

07-27 13:00:57.483: E/THINBTCLIENT(7855): java.io.IOException: socket closed

07-27 13:00:57.483: E/THINBTCLIENT(7855): at

android.bluetooth.BluetoothSocket.write(BluetoothSocket.java:331)

...

我究竟做错了什么?

谢谢.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值