Run Familiar on SDK emulator running Android 1.6 (Donut)
Set round to nonzero length
start timer
Trace follows:
E/AndroidRuntime( 305): Uncaught handler: thread main exiting due to uncaught exception E/AndroidRuntime( 305): java.lang.IllegalStateException: Could not execute method of the activity E/AndroidRuntime( 305): at android.view.View$1.onClick(View.java:2027) E/AndroidRuntime( 305): at android.view.View.performClick(View.java:2344) E/AndroidRuntime( 305): at android.view.View.onTouchEvent(View.java:4133) E/AndroidRuntime( 305): at android.widget.TextView.onTouchEvent(TextView.java:6510) E/AndroidRuntime( 305): at android.view.View.dispatchTouchEvent(View.java:3672) E/AndroidRuntime( 305): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882) E/AndroidRuntime( 305): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882) E/AndroidRuntime( 305): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882) E/AndroidRuntime( 305): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1712) E/AndroidRuntime( 305): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1202) E/AndroidRuntime( 305): at android.app.Activity.dispatchTouchEvent(Activity.java:1987) E/AndroidRuntime( 305): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1696) E/AndroidRuntime( 305): at android.view.ViewRoot.handleMessage(ViewRoot.java:1658) E/AndroidRuntime( 305): at android.os.Handler.dispatchMessage(Handler.java:99) E/AndroidRuntime( 305): at android.os.Looper.loop(Looper.java:123) E/AndroidRuntime( 305): at android.app.ActivityThread.main(ActivityThread.java:4203) E/AndroidRuntime( 305): at java.lang.reflect.Method.invokeNative(Native Method) E/AndroidRuntime( 305): at java.lang.reflect.Method.invoke(Method.java:521) E/AndroidRuntime( 305): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791) E/AndroidRuntime( 305): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549) E/AndroidRuntime( 305): at dalvik.system.NativeStart.main(Native Method) E/AndroidRuntime( 305): Caused by: java.lang.reflect.InvocationTargetException E/AndroidRuntime( 305): at com.gelakinetic.mtgfam.RoundTimerActivity.handleClick(RoundTimerActivity.java:107) E/AndroidRuntime( 305): at java.lang.reflect.Method.invokeNative(Native Method) E/AndroidRuntime( 305): at java.lang.reflect.Method.invoke(Method.java:521) E/AndroidRuntime( 305): at android.view.View$1.onClick(View.java:2022) E/AndroidRuntime( 305): ... 20 more E/AndroidRuntime( 305): Caused by: java.lang.NullPointerException E/AndroidRuntime( 305): at android.app.Notification.setLatestEventInfo(Notification.java:427) E/AndroidRuntime( 305): at com.gelakinetic.mtgfam.RoundTimerService.setTimer(RoundTimerService.java:137) E/AndroidRuntime( 305): at com.gelakinetic.mtgfam.RoundTimerActivity.setTimer(RoundTimerActivity.java:144) E/AndroidRuntime( 305): ... 24 more
Comment #1
Posted on Feb 5, 2012 by Grumpy RhinoFixed. The issue was that API level 4 and below uses onStart() for services, and I only implemented onStartCommand() (which 5+ uses). onStart() is implemented now too, doing the exact same thing as onStartCommand() and it's been verified to work on Android 1.6.
Comment #2
Posted on Feb 5, 2012 by Happy CatNow when the timer is up
E/MediaPlayerService( 31): Couldn't open fd for content://settings/system/notification_sound E/MediaPlayer( 378): Unable to to create media player D/MediaPlayer( 378): create failed: D/MediaPlayer( 378): java.io.IOException: setDataSource failed.: status=0x80000000 D/MediaPlayer( 378): at android.media.MediaPlayer.setDataSource(Native Method) D/MediaPlayer( 378): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:621) D/MediaPlayer( 378): at android.media.MediaPlayer.create(MediaPlayer.java:526) D/MediaPlayer( 378): at android.media.MediaPlayer.create(MediaPlayer.java:507) D/MediaPlayer( 378): at com.gelakinetic.mtgfam.RoundTimerService$2.onReceive(RoundTimerService.java:85) D/MediaPlayer( 378): at android.app.ActivityThread$PackageInfo$ReceiverDispatcher$Args.run(ActivityThread.java:705) D/MediaPlayer( 378): at android.os.Handler.handleCallback(Handler.java:587) D/MediaPlayer( 378): at android.os.Handler.dispatchMessage(Handler.java:92) D/MediaPlayer( 378): at android.os.Looper.loop(Looper.java:123) D/MediaPlayer( 378): at android.app.ActivityThread.main(ActivityThread.java:4203) D/MediaPlayer( 378): at java.lang.reflect.Method.invokeNative(Native Method) D/MediaPlayer( 378): at java.lang.reflect.Method.invoke(Method.java:521) D/MediaPlayer( 378): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791) D/MediaPlayer( 378): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549) D/MediaPlayer( 378): at dalvik.system.NativeStart.main(Native Method) D/AndroidRuntime( 378): Shutting down VM W/dalvikvm( 378): threadid=3: thread exiting with uncaught exception (group=0x4001aa28) E/AndroidRuntime( 378): Uncaught handler: thread main exiting due to uncaught exception E/AndroidRuntime( 378): java.lang.RuntimeException: Error receiving broadcast Intent { act=AlarmEvent flg=0x4 (has extras) } in com.gelakinetic.mtgfam.RoundTimerService$2@437a8470 E/AndroidRuntime( 378): at android.app.ActivityThread$PackageInfo$ReceiverDispatcher$Args.run(ActivityThread.java:716) E/AndroidRuntime( 378): at android.os.Handler.handleCallback(Handler.java:587) E/AndroidRuntime( 378): at android.os.Handler.dispatchMessage(Handler.java:92) E/AndroidRuntime( 378): at android.os.Looper.loop(Looper.java:123) E/AndroidRuntime( 378): at android.app.ActivityThread.main(ActivityThread.java:4203) E/AndroidRuntime( 378): at java.lang.reflect.Method.invokeNative(Native Method) E/AndroidRuntime( 378): at java.lang.reflect.Method.invoke(Method.java:521) E/AndroidRuntime( 378): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791) E/AndroidRuntime( 378): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549) E/AndroidRuntime( 378): at dalvik.system.NativeStart.main(Native Method) E/AndroidRuntime( 378): Caused by: java.lang.NullPointerException E/AndroidRuntime( 378): at com.gelakinetic.mtgfam.RoundTimerService$2.onReceive(RoundTimerService.java:86) E/AndroidRuntime( 378): at android.app.ActivityThread$PackageInfo$ReceiverDispatcher$Args.run(ActivityThread.java:705) E/AndroidRuntime( 378): ... 9 more
Comment #3
Posted on Feb 5, 2012 by Grumpy RhinoI'm not certain, but I think this issue is isolated to the emulator. It's failing to create the MediaPlayer and returning null due to not being able to find the ringtone resource, which I'm pretty sure is happening because the emulator has no ringtone file on it at all. I added in a check so it only tries to play the sound file if the player isn't null to avoid null pointer exceptions crashing the app, but on real 1.6 phones I think sounds should play correctly.
Status: Verified
Labels:
Type-Defect
Priority-Medium