ELSheepO
ELSheepO

Reputation: 305

turn on and off bluetooth periodically

I have an app that looks at the paired devices of a phone.

I have it so that the bluetooth turns on. But when I put in the wait it chrashes every time I open it.

How would I have it so that it turns on for a minute every 5 minutes or something like that. And only turns off if it hasn't connected to anything.

Any help would be great. Thanks

code

private void turnOnBt() {
    //Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
    //startActivityForResult(intent, 1);
    BluetoothAdapter.getDefaultAdapter().enable();  
    try {
        wait(15000);
        notify();
        BluetoothAdapter.getDefaultAdapter().disable();
        wait(60000);
        notify();
        //BluetoothAdapter.getDefaultAdapter().enable();
        //Toast.makeText(getApplicationContext(), "Bluetooth restarted", 0).show();
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

paired code

private void getPairedDevices() {
    // TODO Auto-generated method stub
    devicesArray = btAdapter.getBondedDevices();
    if(devicesArray.size()>0){
        for(BluetoothDevice device:devicesArray){
            pairedDevices.add(device.getName());
        }
    }
}

LogCat

02-21 13:10:18.559: D/TextLayoutCache(25101): Using debug level: 0 - Debug Enabled: 0
02-21 13:10:18.589: D/libEGL(25101): loaded /system/lib/egl/libGLES_android.so
02-21 13:10:18.609: D/libEGL(25101): loaded /system/lib/egl/libEGL_adreno200.so
02-21 13:10:18.639: D/libEGL(25101): loaded /system/lib/egl/libGLESv1_CM_adreno200.so
02-21 13:10:18.639: D/libEGL(25101): loaded /system/lib/egl/libGLESv2_adreno200.so
02-21 13:10:19.329: D/OpenGLRenderer(25101): Enabling debug mode 0
02-21 13:13:07.819: D/TextLayoutCache(25306): Using debug level: 0 - Debug Enabled: 0
02-21 13:13:07.839: D/libEGL(25306): loaded /system/lib/egl/libGLES_android.so
02-21 13:13:07.849: D/libEGL(25306): loaded /system/lib/egl/libEGL_adreno200.so
02-21 13:13:07.869: D/libEGL(25306): loaded /system/lib/egl/libGLESv1_CM_adreno200.so
02-21 13:13:07.869: D/libEGL(25306): loaded /system/lib/egl/libGLESv2_adreno200.so
02-21 13:13:07.969: D/OpenGLRenderer(25306): Enabling debug mode 0
02-21 13:16:42.419: D/AndroidRuntime(25750): Shutting down VM
02-21 13:16:42.419: W/dalvikvm(25750): threadid=1: thread exiting with uncaught exception (group=0x2b542210)
02-21 13:16:42.439: E/AndroidRuntime(25750): FATAL EXCEPTION: main
02-21 13:16:42.439: E/AndroidRuntime(25750): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.Test.bluetooth/com.Test.bluetooth.MainActivity}: java.lang.IllegalMonitorStateException: object not locked by thread before wait()
02-21 13:16:42.439: E/AndroidRuntime(25750):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1967)
02-21 13:16:42.439: E/AndroidRuntime(25750):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992)
02-21 13:16:42.439: E/AndroidRuntime(25750):    at android.app.ActivityThread.access$600(ActivityThread.java:127)
02-21 13:16:42.439: E/AndroidRuntime(25750):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158)
02-21 13:16:42.439: E/AndroidRuntime(25750):    at android.os.Handler.dispatchMessage(Handler.java:99)
02-21 13:16:42.439: E/AndroidRuntime(25750):    at android.os.Looper.loop(Looper.java:137)
02-21 13:16:42.439: E/AndroidRuntime(25750):    at android.app.ActivityThread.main(ActivityThread.java:4441)
02-21 13:16:42.439: E/AndroidRuntime(25750):    at java.lang.reflect.Method.invokeNative(Native Method)
02-21 13:16:42.439: E/AndroidRuntime(25750):    at java.lang.reflect.Method.invoke(Method.java:511)
02-21 13:16:42.439: E/AndroidRuntime(25750):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
02-21 13:16:42.439: E/AndroidRuntime(25750):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
02-21 13:16:42.439: E/AndroidRuntime(25750):    at dalvik.system.NativeStart.main(Native Method)
02-21 13:16:42.439: E/AndroidRuntime(25750): Caused by: java.lang.IllegalMonitorStateException: object not locked by thread before wait()
02-21 13:16:42.439: E/AndroidRuntime(25750):    at java.lang.Object.wait(Native Method)
02-21 13:16:42.439: E/AndroidRuntime(25750):    at java.lang.Object.wait(Object.java:401)
02-21 13:16:42.439: E/AndroidRuntime(25750):    at com.Test.bluetooth.MainActivity.turnOnBt(MainActivity.java:92)
02-21 13:16:42.439: E/AndroidRuntime(25750):    at com.Test.bluetooth.MainActivity.onCreate(MainActivity.java:76)
02-21 13:16:42.439: E/AndroidRuntime(25750):    at android.app.Activity.performCreate(Activity.java:4465)
02-21 13:16:42.439: E/AndroidRuntime(25750):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
02-21 13:16:42.439: E/AndroidRuntime(25750):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1931)
02-21 13:16:42.439: E/AndroidRuntime(25750):    ... 11 more

Second Logcat

02-21 13:47:30.079: D/AndroidRuntime(27230): Shutting down VM
02-21 13:47:30.079: W/dalvikvm(27230): threadid=1: thread exiting with uncaught exception (group=0x2b542210)
02-21 13:47:30.089: E/AndroidRuntime(27230): FATAL EXCEPTION: main
02-21 13:47:30.089: E/AndroidRuntime(27230): java.lang.RuntimeException: Error receiving broadcast Intent { act=android.bluetooth.device.action.FOUND flg=0x10 (has extras) } in com.Test.bluetooth.MainActivity$3@2be07420
02-21 13:47:30.089: E/AndroidRuntime(27230):    at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:737)
02-21 13:47:30.089: E/AndroidRuntime(27230):    at android.os.Handler.handleCallback(Handler.java:605)
02-21 13:47:30.089: E/AndroidRuntime(27230):    at android.os.Handler.dispatchMessage(Handler.java:92)
02-21 13:47:30.089: E/AndroidRuntime(27230):    at android.os.Looper.loop(Looper.java:137)
02-21 13:47:30.089: E/AndroidRuntime(27230):    at android.app.ActivityThread.main(ActivityThread.java:4441)
02-21 13:47:30.089: E/AndroidRuntime(27230):    at java.lang.reflect.Method.invokeNative(Native Method)
02-21 13:47:30.089: E/AndroidRuntime(27230):    at java.lang.reflect.Method.invoke(Method.java:511)
02-21 13:47:30.089: E/AndroidRuntime(27230):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
02-21 13:47:30.089: E/AndroidRuntime(27230):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
02-21 13:47:30.089: E/AndroidRuntime(27230):    at dalvik.system.NativeStart.main(Native Method)
02-21 13:47:30.089: E/AndroidRuntime(27230): Caused by: java.lang.NullPointerException
02-21 13:47:30.089: E/AndroidRuntime(27230):    at com.Test.bluetooth.MainActivity$3.onReceive(MainActivity.java:137)
02-21 13:47:30.089: E/AndroidRuntime(27230):    at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:728)
02-21 13:47:30.089: E/AndroidRuntime(27230):    ... 9 more

Upvotes: 0

Views: 1388

Answers (2)

Briareos386
Briareos386

Reputation: 1957

In your MainActivitiy::turnOnBt() method - this is where there the exception is thrown you have a call to Thread.wait(); (presumbly on line 92)

I'm not quite sure what you try to achieve with this as a call to wait() on the UI thread will (I'm pretty sure) crash your app with an ANR Exception.

To call Thread.wait(); you have to do it in a synchronized block:

synchronized(this) {
    try {
        Thread.wait();
    }
    catch(InterruptedException e) {
    }
}

But as I said - this is not what you want. Have you mixed up Thread.wait() with Thread.sleep(...);? Event then, calling Thread.sleep(...) on the UI Thread is really not recommended.

Upvotes: 1

Radu
Radu

Reputation: 2074

Post your logcat error.

Also, why would you turn the entire adapter off after you look at the paired devices...Remember the calls to .enable() and .disable() are to be done after a user interface response!

Never programatically without any user input! What if I have another device connected, like a headset for example? See more here.

I understand that if the adapter is not enabled you cannot get the paired devices, but still!

Upvotes: 1

Related Questions