1. Download our Official Android App: Forums for Android!

Android bluetooth app crashing

Discussion in 'Android Development' started by Teneppa, Sep 8, 2017.

  1. Teneppa

    Teneppa Lurker
    Thread Starter
    Rank:
    None
    Points:
    5
    Posts:
    3
    Joined:
    Sep 8, 2017

    Sep 8, 2017
    3
    0
    5
    Hey! I'm trying to code an application to communicate with the HC-06 (Serial bluetooth module). I'm trying to implement a joystick or more like a touchpad to control robotic arm. I would have used NRF24L01 chip with another microcontroller but I thought I could take a look how to code android; I've always wanted to code for phones but I've never got anything working out of it. Hope someone could help me to begin coding java for android.

    Code (Java):
    1. package com.example.teemu.copied;
    2.  
    3. import android.app.Activity;
    4. import android.bluetooth.BluetoothAdapter;
    5. import android.bluetooth.BluetoothDevice;
    6. import android.bluetooth.BluetoothSocket;
    7. import android.content.Intent;
    8. import android.os.Bundle;
    9. import android.os.Handler;
    10. import android.view.MotionEvent;
    11. import android.view.View;
    12. import android.widget.Button;
    13. import android.widget.EditText;
    14. import android.widget.TextView;
    15.  
    16. import java.io.IOException;
    17. import java.io.InputStream;
    18. import java.io.OutputStream;
    19. import java.util.Set;
    20. import java.util.UUID;
    21.  
    22. //package Android.Arduino.Bluetooth;
    23.  
    24. public class MainActivity extends Activity
    25. {
    26.     TextView myLabel;
    27.     EditText myTextbox;
    28.     BluetoothAdapter mBluetoothAdapter;
    29.     BluetoothSocket mmSocket;
    30.     BluetoothDevice mmDevice;
    31.     OutputStream mmOutputStream;
    32.     InputStream mmInputStream;
    33.     Thread workerThread;
    34.     byte[] readBuffer;
    35.     int readBufferPosition;
    36.     int counter;
    37.     volatile boolean stopWorker;
    38.  
    39.     //NAME THE DEVICE
    40.     String BT_NAME = "unnamed";
    41.  
    42.     @Override
    43.     public void onCreate(Bundle savedInstanceState) {
    44.         super.onCreate(savedInstanceState);
    45.         setContentView(R.layout.activity_main);
    46.  
    47.         Button openButton = (Button) findViewById(R.id.open);
    48.         Button sendButton = (Button) findViewById(R.id.send);
    49.         Button closeButton = (Button) findViewById(R.id.close);
    50.  
    51.         Button joystick = (Button) findViewById(R.id.b_joystic);
    52.  
    53.         myLabel = (TextView) findViewById(R.id.label);
    54.         myTextbox = (EditText) findViewById(R.id.entry);
    55.  
    56.         joystick.setOnTouchListener(new View.OnTouchListener() {
    57.  
    58.             public boolean onTouch(View v, MotionEvent event) {
    59.                 int x = (int) event.getRawX();
    60.                 int y = (int) event.getRawY();
    61.  
    62.                 TextView xt = (TextView) findViewById(R.id.x_txt);
    63.                 TextView yt = (TextView) findViewById(R.id.y_txt);
    64.  
    65.                 xt.setText(x);
    66.                 yt.setText(y);
    67.  
    68.                 return true;
    69.             }
    70.         });
    71.  
    72.         //Open Button
    73.         openButton.setOnClickListener(new View.OnClickListener() {
    74.             public void onClick(View v) {
    75.                 try {
    76.                     findBT();
    77.                     openBT();
    78.                 } catch (IOException ex) {
    79.                 }
    80.             }
    81.         });
    82.  
    83.         //Send Button
    84.         sendButton.setOnClickListener(new View.OnClickListener() {
    85.             public void onClick(View v) {
    86.                 try {
    87.                     sendData();
    88.                 } catch (IOException ex) {
    89.                 }
    90.             }
    91.         });
    92.  
    93.         //Close button
    94.         closeButton.setOnClickListener(new View.OnClickListener() {
    95.             public void onClick(View v) {
    96.                 try {
    97.                     closeBT();
    98.                 } catch (IOException ex) {
    99.                 }
    100.             }
    101.         });
    102.     }
    103.  
    104.     void findBT()
    105.     {
    106.         mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    107.         if(mBluetoothAdapter == null)
    108.         {
    109.             myLabel.setText("No bluetooth adapter available");
    110.         }
    111.  
    112.         if(!mBluetoothAdapter.isEnabled())
    113.         {
    114.             Intent enableBluetooth = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
    115.             startActivityForResult(enableBluetooth, 0);
    116.         }
    117.  
    118.         Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();
    119.         if(pairedDevices.size() > 0)
    120.         {
    121.             for(BluetoothDevice device : pairedDevices)
    122.             {
    123.                 if(device.getName().equals(BT_NAME))
    124.                 {
    125.                     mmDevice = device;
    126.                     break;
    127.                 }
    128.             }
    129.         }
    130.         myLabel.setText("Bluetooth Device Found");
    131.     }
    132.  
    133.     void openBT() throws IOException
    134.     {
    135.         UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); //Standard SerialPortService ID
    136.         mmSocket = mmDevice.createRfcommSocketToServiceRecord(uuid);
    137.         mmSocket.connect();
    138.         mmOutputStream = mmSocket.getOutputStream();
    139.         mmInputStream = mmSocket.getInputStream();
    140.  
    141.         beginListenForData();
    142.  
    143.         myLabel.setText("Bluetooth Opened");
    144.     }
    145.  
    146.     void beginListenForData()
    147.     {
    148.         final Handler handler = new Handler();
    149.         final byte delimiter = 10; //This is the ASCII code for a newline character
    150.  
    151.         stopWorker = false;
    152.         readBufferPosition = 0;
    153.         readBuffer = new byte[1024];
    154.         workerThread = new Thread(new Runnable()
    155.         {
    156.             public void run()
    157.             {
    158.                 while(!Thread.currentThread().isInterrupted() && !stopWorker)
    159.                 {
    160.                     try
    161.                     {
    162.                         int bytesAvailable = mmInputStream.available();
    163.                         if(bytesAvailable > 0)
    164.                         {
    165.                             byte[] packetBytes = new byte[bytesAvailable];
    166.                             mmInputStream.read(packetBytes);
    167.                             for(int i=0;i<bytesAvailable;i++)
    168.                             {
    169.                                 byte b = packetBytes[i];
    170.                                 if(b == delimiter)
    171.                                 {
    172.                                     byte[] encodedBytes = new byte[readBufferPosition];
    173.                                     System.arraycopy(readBuffer, 0, encodedBytes, 0, encodedBytes.length);
    174.                                     final String data = new String(encodedBytes, "US-ASCII");
    175.                                     readBufferPosition = 0;
    176.  
    177.                                     handler.post(new Runnable()
    178.                                     {
    179.                                         public void run()
    180.                                         {
    181.                                             myLabel.setText(data);
    182.                                         }
    183.                                     });
    184.                                 }
    185.                                 else
    186.                                 {
    187.                                     readBuffer[readBufferPosition++] = b;
    188.                                 }
    189.                             }
    190.                         }
    191.                     }
    192.                     catch (IOException ex)
    193.                     {
    194.                         stopWorker = true;
    195.                     }
    196.                 }
    197.             }
    198.         });
    199.  
    200.         workerThread.start();
    201.     }
    202.  
    203.     void sendData() throws IOException
    204.     {
    205.         String msg = myTextbox.getText().toString();
    206.         msg += "\n";
    207.         mmOutputStream.write(msg.getBytes());
    208.         myLabel.setText("Data Sent");
    209.     }
    210.  
    211.     void closeBT() throws IOException
    212.     {
    213.         stopWorker = true;
    214.         mmOutputStream.close();
    215.         mmInputStream.close();
    216.         mmSocket.close();
    217.         myLabel.setText("Bluetooth Closed");
    218.     }
    219. }
    Code (Text):
    1. <?xml version="1.0" encoding="utf-8"?>
    2.  
    3. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    4.     xmlns:app="http://schemas.android.com/apk/res-auto"
    5.     xmlns:tools="http://schemas.android.com/tools"
    6.     android:layout_width="fill_parent"
    7.     android:layout_height="fill_parent"
    8.     tools:ignore="TextFields,HardcodedText" >
    9.  
    10.     <TextView
    11.         android:id="@+id/label"
    12.         android:layout_width="fill_parent"
    13.         android:layout_height="wrap_content"
    14.         android:text="Type here:"
    15.         android:layout_above="@+id/entry"
    16.         android:layout_alignParentStart="true" />
    17.  
    18.     <EditText
    19.         android:id="@+id/entry"
    20.         android:layout_width="fill_parent"
    21.         android:layout_height="wrap_content"
    22.         android:background="@android:drawable/editbox_background"
    23.         android:layout_above="@+id/open"
    24.         android:layout_alignParentStart="true"
    25.         android:layout_marginBottom="22dp" />
    26.  
    27.     <Button
    28.         android:id="@+id/open"
    29.         android:layout_width="wrap_content"
    30.         android:layout_height="wrap_content"
    31.         android:layout_marginLeft="10dip"
    32.         android:text="Open"
    33.         android:layout_alignBaseline="@+id/close"
    34.         android:layout_alignBottom="@+id/close"
    35.         android:layout_centerHorizontal="true" />
    36.  
    37.     <Button
    38.         android:id="@+id/send"
    39.         android:layout_width="wrap_content"
    40.         android:layout_height="wrap_content"
    41.         android:text="Send"
    42.         android:layout_marginEnd="26dp"
    43.         android:layout_alignBaseline="@+id/open"
    44.         android:layout_alignBottom="@+id/open"
    45.         android:layout_alignParentEnd="true" />
    46.  
    47.     <Button
    48.         android:id="@+id/close"
    49.         android:layout_width="wrap_content"
    50.         android:layout_height="wrap_content"
    51.         android:text="Close"
    52.         android:layout_marginStart="23dp"
    53.         android:layout_marginBottom="20dp"
    54.         android:layout_alignParentBottom="true"
    55.         android:layout_alignParentStart="true" />
    56.  
    57.     <Button
    58.         android:id="@+id/b_joystic"
    59.         android:layout_width="match_parent"
    60.         android:layout_height="300dp"
    61.         android:layout_alignEnd="@+id/send"
    62.         android:layout_alignStart="@+id/close"
    63.         android:layout_below="@+id/y_txt"
    64.         android:layout_marginTop="14dp"
    65.         android:backgroundTint="?android:attr/colorControlNormal"
    66.         android:elevation="0dp"
    67.         android:visibility="visible" />
    68.  
    69.     <TextView
    70.         android:id="@+id/x_txt"
    71.         android:layout_width="wrap_content"
    72.         android:layout_height="wrap_content"
    73.         android:layout_alignParentStart="true"
    74.         android:layout_alignParentTop="true"
    75.         android:text="TextView" />
    76.  
    77.     <TextView
    78.         android:id="@+id/y_txt"
    79.         android:layout_width="wrap_content"
    80.         android:layout_height="wrap_content"
    81.         android:layout_alignEnd="@+id/x_txt"
    82.         android:layout_below="@+id/x_txt"
    83.         android:text="TextView" />
    84.  
    85. </RelativeLayout>
    86.  


     

    Advertisement

  2. LV426

    LV426 I say we take off and nuke this place from orbit
    Moderator
    Rank:
     #11
    Points:
    1,988
    Posts:
    7,460
    Joined:
    Oct 16, 2015

    Oct 16, 2015
    7,460
    10,749
    1,988
    Male
    Software developer
    South West of England
  3. Teneppa

    Teneppa Lurker
    Thread Starter
    Rank:
    None
    Points:
    5
    Posts:
    3
    Joined:
    Sep 8, 2017

    Sep 8, 2017
    3
    0
    5
    Do you mean this?

    Code (Text):
    1. 09-08 19:06:49.716 13587-13587/com.example.teemu.copied E/InputEventReceiver: Exception dispatching input event.
    2. 09-08 19:06:49.716 13587-13587/com.example.teemu.copied E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
    3. 09-08 19:06:49.717 13587-13587/com.example.teemu.copied E/MessageQueue-JNI: android.content.res.Resources$NotFoundException: String resource ID #0x2ec
    4.                                                                                 at android.content.res.Resources.getText(Resources.java:312)
    5.                                                                                 at android.widget.TextView.setText(TextView.java:4422)
    6.                                                                                 at com.example.teemu.copied.MainActivity$1.onTouch(MainActivity.java:65)
    7.                                                                                 at android.view.View.dispatchTouchEvent(View.java:9296)
    8.                                                                                 at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
    9.                                                                                 at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2197)
    10.                                                                                 at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
    11.                                                                                 at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2197)
    12.                                                                                 at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
    13.                                                                                 at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2197)
    14.                                                                                 at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
    15.                                                                                 at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2197)
    16.                                                                                 at com.android.internal.policy.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2403)
    17.                                                                                 at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1737)
    18.                                                                                 at android.app.Activity.dispatchTouchEvent(Activity.java:2771)
    19.                                                                                 at com.android.internal.policy.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2364)
    20.                                                                                 at android.view.View.dispatchPointerEvent(View.java:9520)
    21.                                                                                 at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4230)
    22.                                                                                 at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4096)
    23.                                                                                 at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3642)
    24.                                                                                 at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3695)
    25.                                                                                 at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3661)
    26.                                                                                 at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3787)
    27.                                                                                 at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3669)
    28.                                                                                 at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3844)
    29.                                                                                 at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3642)
    30.                                                                                 at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3695)
    31.                                                                                 at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3661)
    32.                                                                                 at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3669)
    33.                                                                                 at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3642)
    34.                                                                                 at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5922)
    35.                                                                                 at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5896)
    36.                                                                                 at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5857)
    37.                                                                                 at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6025)
    38.                                                                                 at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
    39.                                                                                 at android.os.MessageQueue.nativePollOnce(Native Method)
    40.                                                                                 at android.os.MessageQueue.next(MessageQueue.java:323)
    41.                                                                                 at android.os.Looper.loop(Looper.java:135)
    42.                                                                                 at android.app.ActivityThread.main(ActivityThread.java:5417)
    43.                                                                                 at java.lang.reflect.Method.invoke(Native Method)
    44.                                                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    45.                                                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
    46. 09-08 19:06:49.717 13587-13587/com.example.teemu.copied D/AndroidRuntime: Shutting down VM
    47. 09-08 19:06:49.718 13587-13587/com.example.teemu.copied E/AndroidRuntime: FATAL EXCEPTION: main
    48.                                                                           Process: com.example.teemu.copied, PID: 13587
    49.                                                                           android.content.res.Resources$NotFoundException: String resource ID #0x2ec
    50.                                                                               at android.content.res.Resources.getText(Resources.java:312)
    51.                                                                               at android.widget.TextView.setText(TextView.java:4422)
    52.                                                                               at com.example.teemu.copied.MainActivity$1.onTouch(MainActivity.java:65)
    53.                                                                               at android.view.View.dispatchTouchEvent(View.java:9296)
    54.                                                                               at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
    55.                                                                               at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2197)
    56.                                                                               at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
    57.                                                                               at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2197)
    58.                                                                               at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
    59.                                                                               at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2197)
    60.                                                                               at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
    61.                                                                               at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2197)
    62.                                                                               at com.android.internal.policy.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2403)
    63.                                                                               at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1737)
    64.                                                                               at android.app.Activity.dispatchTouchEvent(Activity.java:2771)
    65.                                                                               at com.android.internal.policy.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2364)
    66.                                                                               at android.view.View.dispatchPointerEvent(View.java:9520)
    67.                                                                               at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4230)
    68.                                                                               at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4096)
    69.                                                                               at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3642)
    70.                                                                               at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3695)
    71.                                                                               at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3661)
    72.                                                                               at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3787)
    73.                                                                               at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3669)
    74.                                                                               at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3844)
    75.                                                                               at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3642)
    76.                                                                               at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3695)
    77.                                                                               at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3661)
    78.                                                                               at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3669)
    79.                                                                               at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3642)
    80.                                                                               at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5922)
    81.                                                                               at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5896)
    82.                                                                               at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5857)
    83.                                                                               at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6025)
    84.                                                                               at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
    85.                                                                               at android.os.MessageQueue.nativePollOnce(Native Method)
    86.                                                                               at android.os.MessageQueue.next(MessageQueue.java:323)
    87.                                                                               at android.os.Looper.loop(Looper.java:135)
    88.                                                                               at android.app.ActivityThread.main(ActivityThread.java:5417)
    89.                                                                               at java.lang.reflect.Method.invoke(Native Method)
    90.                                                                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    91.                                                                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
     
  4. LV426

    LV426 I say we take off and nuke this place from orbit
    Moderator
    Rank:
     #11
    Points:
    1,988
    Posts:
    7,460
    Joined:
    Oct 16, 2015

    Oct 16, 2015
    7,460
    10,749
    1,988
    Male
    Software developer
    South West of England
    If you read the stack trace error, this part of it tells you which line of your code caused the problem

    Code (Text):
    1.  
    2. at com.example.teemu.copied.MainActivity$1.onTouch(MainActivity.java:65)
    3.  
    This line is causing the problem

    Code (Text):
    1.  
    2. xt.setText(x);
    3.  
    So looking at the reference documentation for TextView, you can see that method setText() has two variants

    https://developer.android.com/reference/android/widget/TextView.html#setText(int)

    One of them takes an int parameter type, which should refer to a resource id.
    The other one takes a CharSequence (String) parameter type. You should be using this one.
    So to display your value (x), you need to convert this int value to a String.
    I'll let you try and figure that out.
     
    Teneppa likes this.
  5. Teneppa

    Teneppa Lurker
    Thread Starter
    Rank:
    None
    Points:
    5
    Posts:
    3
    Joined:
    Sep 8, 2017

    Sep 8, 2017
    3
    0
    5
    Seems like using
    xt.setText(String.valueOf(x));
    yt.setText(String.valueOf(y));
    fixes that problem.

    Theres only one more problem: the crashing if the bluetooth is off or if the device isn't paired.
    Such a shame that the part is still on it's way so I can't develop this a whole lot further...

    Seems like a null variable error. How I can avoid those? I have been coding only c++ so this is quite an experience for me ;)

    Code (Text):
    1. 9-08 17:48:47.274 4478-4528/com.example.teemu.copied E/eglCodecCommon: glUtilsParamSize: unknow param 0x000082da
    2. 09-08 17:48:47.274 4478-4528/com.example.teemu.copied E/eglCodecCommon: glUtilsParamSize: unknow param 0x00008cdf
    3. 09-08 17:48:47.274 4478-4528/com.example.teemu.copied E/eglCodecCommon: glUtilsParamSize: unknow param 0x00008824
    4. 09-08 17:48:47.293 4478-4528/com.example.teemu.copied D/EGL_emulation: eglMakeCurrent: 0x7fa8c215cf40: ver 3 1 (tinfo 0x7fa8c2147940)
    5. 09-08 17:48:49.141 4478-4478/com.example.teemu.copied E/BluetoothAdapter: Bluetooth binder is null
    6. 09-08 17:48:49.141 4478-4478/com.example.teemu.copied D/AndroidRuntime: Shutting down VM
    7. 09-08 17:48:49.141 4478-4478/com.example.teemu.copied E/AndroidRuntime: FATAL EXCEPTION: main
    8.                                                                         Process: com.example.teemu.copied, PID: 4478
    9.                                                                         java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.bluetooth.BluetoothAdapter.isEnabled()' on a null object reference
    10.                                                                             at com.example.teemu.copied.MainActivity.findBT(MainActivity.java:112)
    11.                                                                             at com.example.teemu.copied.MainActivity$2.onClick(MainActivity.java:76)
    12.                                                                             at android.view.View.performClick(View.java:5198)
    13.                                                                             at android.view.View$PerformClick.run(View.java:21147)
    14.                                                                             at android.os.Handler.handleCallback(Handler.java:739)
    15.                                                                             at android.os.Handler.dispatchMessage(Handler.java:95)
    16.                                                                             at android.os.Looper.loop(Looper.java:148)
    17.                                                                             at android.app.ActivityThread.main(ActivityThread.java:5417)
    18.                                                                             at java.lang.reflect.Method.invoke(Native Method)
    19.                                                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    20.                                                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
    -edit-

    Come on.. more bugs! This time Attempt to invoke virtual method 'void java.io_OutputStream.write(byte[])' on a null object reference
    Absolutely no idea what that means :X

    Code (Text):
    1. 09-08 17:56:24.936 10336-10336/com.example.teemu.copied E/AndroidRuntime: FATAL EXCEPTION: main
    2.                                                                           Process: com.example.teemu.copied, PID: 10336
    3.                                                                           java.lang.NullPointerException: Attempt to invoke virtual method 'void java.io.OutputStream.write(byte[])' on a null object reference
    4.                                                                               at com.example.teemu.copied.MainActivity.sendData(MainActivity.java:210)
    5.                                                                               at com.example.teemu.copied.MainActivity$3.onClick(MainActivity.java:87)
    6.                                                                               at android.view.View.performClick(View.java:5198)
    7.                                                                               at android.view.View$PerformClick.run(View.java:21147)
    8.                                                                               at android.os.Handler.handleCallback(Handler.java:739)
    9.                                                                               at android.os.Handler.dispatchMessage(Handler.java:95)
    10.                                                                               at android.os.Looper.loop(Looper.java:148)
    11.                                                                               at android.app.ActivityThread.main(ActivityThread.java:5417)
    12.                                                                               at java.lang.reflect.Method.invoke(Native Method)
    13.                                                                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    14.                                                                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
     
    #5 Teneppa, Sep 8, 2017
    Last edited: Sep 8, 2017
  6. LV426

    LV426 I say we take off and nuke this place from orbit
    Moderator
    Rank:
     #11
    Points:
    1,988
    Posts:
    7,460
    Joined:
    Oct 16, 2015

    Oct 16, 2015
    7,460
    10,749
    1,988
    Male
    Software developer
    South West of England
    If you've coded C++ before, you must know that bad things happen if you try and de-reference a null pointer. Similarly in Java, if you declare an object variable, but don't allocate any memory before using it, then you get a NullPointerException. That's actually more help than C++ gives you, which in most cases your program will just bomb out without any clue what happened.
    The stack trace you get from the Java stack trace is pretty clear what the problem is - mmOutputStream is null.
     

Share This Page

Loading...