2017-02-12 188 views
0

我试图在Android智能手机和Mindstorms NXT之间建立蓝牙连接。智能手机是一款采用Android 5.1.1的索尼Xperia Zl。应用程序应该发送一个NXT号码,NXT应该用一个正在运行的程序来接收它。 这是我目前的源代码:成功启用蓝牙IOException:蓝牙关闭

package com.mona.projektkurs; 

import java.io.IOException; 
import java.io.OutputStreamWriter; 
import java.util.UUID; 

import android.app.Activity; 
import android.bluetooth.BluetoothAdapter; 
import android.bluetooth.BluetoothDevice; 
import android.bluetooth.BluetoothSocket; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.Toast; 


public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    enableBt(); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 
    if (id == R.id.action_settings) { 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 



private BluetoothAdapter adapter; 
    private BluetoothDevice device = null; 
    private BluetoothSocket BTsocket=null; 

public void enableBt(){ 
    adapter = BluetoothAdapter.getDefaultAdapter(); 
    if(!adapter.isEnabled()){ 
     adapter.enable(); 
     connection(); 
    }else{ 
     Toast.makeText(getApplicationContext(),"Error1" , Toast.LENGTH_LONG).show(); 
    } 
} 

public void connection(){ 
    device = adapter.getRemoteDevice("00:16:53:1B:1D:C5"); 
    try{ 
     BTsocket = device.createRfcommSocketToServiceRecord(UUID 
        .fromString("00001101-0000-1000-8000-00805F9B34FB")); 
     BTsocket.connect(); 
     messageWrite(); 
    }catch(IOException e){ 
     Toast.makeText(getApplicationContext(), "Error2"+e.toString(), Toast.LENGTH_LONG).show(); 
    } 
} 

public void messageWrite(){ 
    if(BTsocket != null){ 
     try{ 
      OutputStreamWriter out = new OutputStreamWriter(BTsocket.getOutputStream()); 
      out.write((byte)0x80); // no respond 
      out.write((byte)0x09); // MessageWrite 
      out.write((byte)0x03); // Inbox (0-9) 
      out.write((byte)0x02); // MessageSize 
      out.write((byte)0x49); // Data ("1" == 0x49 ASCII Code) 
      out.write((byte)0x00); // Null termination (/0) 
      BTsocket.close(); 
     }catch(IOException f){ 
      Toast.makeText(getApplicationContext(), "Error3"+f.toString(), Toast.LENGTH_LONG).show(); 


    } 
     } 
    } 

} 

蓝牙但的ErrorHandler抛出IO.Exception: 蓝牙关闭。 MAC地址已被证实。蓝牙连接可以成功建立商业应用程序。

任何想法?

回答

0

您是否在清单中添加了蓝牙许可?

+0

是的,我添加了权限正常和管理员。 – Mnchen875