2017-04-14 16 views
0

アプリを使用してスマートフォンをBluetooth経由でEV3に接続する際に問題があります。LeJOS EV3とAndroid間のBluetooth接続

マイ状況:
私はleJOS 0.9.1-aplu11で実行されますEV3への単純な文字列を送信するためにアプリケーションを開発しています。
私の問題は、私は本当にBluetoothに精通していないので、私のアプリや受信機ソフトウェアもうまくいきません。

私の目標:
私の目標は、私がボタンを押したときに文字列を送信アプリやアプリから弦楽のためpermanantリスニングでEV3のリスナーを作成することです。

私があなたを助けてくれることを願っています。
私はドイツ出身ですので、私の美しい筆記技については不思議ではありません!ここで

は私のコードです:
アプリケーション:

public class BTJ { 
public static void main(String[] args) { 

    BTConnector connector = new BTConnector(); 

    System.out.println("0. Auf Signal warten"); 

    NXTConnection conn = connector.waitForConnection(0, NXTConnection.RAW); 

    InputStream is = conn.openInputStream(); 
    BufferedReader br = new BufferedReader(new InputStreamReader(is)); 

    String message = ""; 

    while (true){ 

     System.out.println("1. Schleife gestartet"); 
     message = ""; 

     try { 
      message = br.readLine(); 
      System.out.println("2. Message: " + message); 
     } catch (IOException e) { 
      e.printStackTrace(System.out); 
     } 
    } 
} 

パブリッククラスMainActivityはAppCompatActivity {

private final static String TAG = "MainActivity"; 
private BluetoothAdapter mBluetoothAdapter; 
private static BluetoothDevice mDevice; 
private Button mSendBN; 

private final static String MY_UUID = "00001101-0000-1000-8000-00805f9b34fb"; 
private static BluetoothSocket mSocket = null; 
private static String mMessage = "Stop"; 
private static PrintStream sender; 

private void findBrick() { 
    Set<BluetoothDevice> pairedDevices = mBluetoothAdapter 
      .getBondedDevices(); 
    for (BluetoothDevice device : pairedDevices) { 
     if (device.getName().equals("EV3")) 
      this.mDevice = device; 
    } 
} 

private void initBluetooth() { 
    Log.d(TAG, "Checking Bluetooth..."); 
    if (mBluetoothAdapter == null) { 
     Log.d(TAG, "Device does not support Bluetooth"); 
     mSendBN.setClickable(false); 
    } else { 
     Log.d(TAG, "Bluetooth supported"); 
    } 
    if (!mBluetoothAdapter.isEnabled()) { 
     mSendBN.setClickable(false); 
     Log.d(TAG, "Bluetooth not enabled"); 
    } else { 
     Log.d(TAG, "Bluetooth enabled"); 
    } 
} 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Toast.makeText(this, "SpeechRecognizer gestartet", Toast.LENGTH_SHORT).show(); 
    setContentView(R.layout.activity_main); 

    mSendBN = (Button) findViewById(R.id.button); 
    mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 

    initBluetooth(); 
    findBrick(); 

    if (mDevice == null) { 
     mSendBN.setClickable(false); 
     Toast.makeText(this, "No Devices found or BT disabled", Toast.LENGTH_SHORT).show(); 
     Log.d("onC", "Connected to " + mDevice); 
    } 

    try { 
     createSocket(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    startService(); 
} 

private void startService() { 
    if (PermissionHandler.checkPermission(this, PermissionHandler.RECORD_AUDIO)) { 
     Intent i = new Intent(this, BackgroundRecognizerService.class); 
     startService(i); 
    } 
} 

public void onRequestPermissionResult(int requestCode, String[] permissions, int[] grantResults) { 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    if (requestCode == PermissionHandler.RECORD_AUDIO && grantResults.length > 0) { 
     if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
      startService(); 
     } 
    } 
} 

public static void onSend(View view) throws IOException { 
    try { 
     OutputStream os = mSocket.getOutputStream(); 
     sender = new PrintStream(os); 
     Log.d("onSend", "Message = " + mMessage); 
     sender.println(mMessage); 
     sender.flush(); 
     Log.d("onSend", "Message sent"); 
     mSocket.close(); 
     Log.d("onSend", "Socket closed"); 
    } catch (IllegalStateException | NullPointerException e) { 
     e.printStackTrace(); 
    } 

} 

public void createSocket() throws IOException { 
    try { 
     UUID uuid = UUID.fromString(MY_UUID); 
     mSocket = mDevice.createRfcommSocketToServiceRecord(uuid); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    Log.d("createSocket", "Adapter"); 

    BluetoothAdapter.getDefaultAdapter().cancelDiscovery(); 
    mSocket.connect(); 
    OutputStream os = mSocket.getOutputStream(); 
    sender = new PrintStream(os); 

    Log.d("createSocket", "Fertig, " + "Socket: " + mSocket + " Sender: " + sender + " OutputStream: " + os + " mDevice: " + mDevice.getName()); 
} 

protected void onDestroy() { 
    super.onDestroy(); 
    Log.d("onDestroy", "App beendet"); 
    try { 
     mSocket.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    Log.d("onDestroy", "App vollständig beendet"); 
} 

}

EV3を拡張します10

}

+1

これまでに何を試みましたか?いくつかのコードを投稿してください。 – Aurasphere

+0

私のコードを追加しました –

+0

Can ** _ anyone _ **私は助けてくれますか? –

答えて

0

私は答えが..です!

public class BTJ { 

    public static void main(String[] args) { 
     BTConnector connector = new BTConnector(); 

     System.out.println("0. Auf Signal warten"); 

     NXTConnection conn = connector.waitForConnection(0, NXTConnection.RAW); 

     InputStream is = conn.openInputStream(); 
     BufferedReader br = new BufferedReader(new InputStreamReader(is), 1); 

     String message = ""; 

     while (true){ 

      System.out.println("1. Schleife gestartet"); 
      message = ""; 

      try { 
       message = br.readLine(); 
       System.out.println("2. Message: " + message); 
      } catch (IOException e) { 
       e.printStackTrace(System.out); 

     } 
    } 
} 
関連する問題