android - mediaPlayer and back button -
i have activity implements mediacontroller.mediaplayercontrol
.
the audio player plays file fine, can not out of activity pressing button.
when button pressed, these 2 messages in log. current activity appears continue work fine.
warn/keycharactermap(522): no keyboard id 0 warn/keycharactermap(522): using default keymap: /system/usr/keychars/qwerty.kcm.bin
if take implementation of mediacontroller.mediaplayercontrol out of activity, button works expected.
any ideas on how resolve this?
here class. took irrelevant parts out didn't screw copy up.
public class contentactivity extends activity implements onpreparedlistener, mediacontroller.mediaplayercontrol { private static final string tag = "audioplayer"; private mediaplayer mediaplayer; private mediacontroller mediacontroller; private string audiofile; private handler handler = new handler(); /** called when activity first created. */ @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.content); audiofile = "http://example.com/foo.mp3" mediaplayer = new mediaplayer(); mediaplayer.setonpreparedlistener(this); mediacontroller = new mediacontroller(this){ @override public void hide() { this.show(0); } @override public void setmediaplayer(mediaplayercontrol player) { super.setmediaplayer(player); this.show(); } }; mediaplayer.setdatasource(audiofile); mediaplayer.prepare(); } @override protected void onstop() { super.onstop(); mediaplayer.stop(); mediaplayer.release(); } //--mediaplayercontrol methods---------------------------------------------------- public void start() { mediaplayer.start(); } public void pause() { mediaplayer.pause(); } public int getduration() { return mediaplayer.getduration(); } public int getcurrentposition() { return mediaplayer.getcurrentposition(); } public void seekto(int i) { mediaplayer.seekto(i); } public boolean isplaying() { return mediaplayer.isplaying(); } public int getbufferpercentage() { return 0; } public boolean canpause() { return true; } public boolean canseekbackward() { return true; } public boolean canseekforward() { return true; } //-------------------------------------------------------------------------------- public void onprepared(mediaplayer mediaplayer) { log.d(tag, "onprepared"); mediacontroller.setmediaplayer(this); mediacontroller.setanchorview(findviewbyid(r.id.mediacontroller)); handler.post(new runnable() { public void run() { mediacontroller.setenabled(true); mediacontroller.show(); } }); }}
stack
----- pid 632 @ 2011-07-21 13:53:37 ----- dalvik threads: "main" prio=5 tid=3 native | group="main" scount=1 dscount=0 s=n obj=0x4001b268 self=0xbd00 | systid=632 nice=0 sched=0/0 cgrp=default handle=-1344001384 @ android.os.binderproxy.transact(native method) @ android.app.activitymanagerproxy.handleapplicationerror(activitymanagernative.java:2358) @ com.android.internal.os.runtimeinit.crash(runtimeinit.java:339) @ com.android.internal.os.runtimeinit$uncaughthandler.uncaughtexception(runtimeinit.java:76) @ java.lang.threadgroup.uncaughtexception(threadgroup.java:887) @ java.lang.threadgroup.uncaughtexception(threadgroup.java:884) @ dalvik.system.nativestart.main(native method) "binder thread #4" prio=5 tid=17 native | group="main" scount=1 dscount=0 s=n obj=0x44cd5370 self=0x3d6878 | systid=648 nice=0 sched=0/0 cgrp=default handle=3645656 @ dalvik.system.nativestart.run(native method) "binder thread #3" prio=5 tid=15 native | group="main" scount=1 dscount=0 s=n obj=0x44cd52b0 self=0x3d5ca8 | systid=647 nice=0 sched=0/0 cgrp=default handle=4013152 @ dalvik.system.nativestart.run(native method) "binder thread #2" prio=5 tid=13 native | group="main" scount=1 dscount=0 s=n obj=0x44c03da0 self=0x137be8 | systid=637 nice=0 sched=0/0 cgrp=default handle=1281760 @ dalvik.system.nativestart.run(native method) "binder thread #1" prio=5 tid=11 native | group="main" scount=1 dscount=0 s=n obj=0x44c00a48 self=0x12def8 | systid=636 nice=0 sched=0/0 cgrp=default handle=1159488 @ dalvik.system.nativestart.run(native method) "jdwp" daemon prio=5 tid=9 vmwait | group="system" scount=1 dscount=0 s=n obj=0x44bfe2a0 self=0x138d18 | systid=635 nice=0 sched=0/0 cgrp=default handle=1193192 @ dalvik.system.nativestart.run(native method) "signal catcher" daemon prio=5 tid=7 runnable | group="system" scount=0 dscount=0 s=n obj=0x44bfe1e8 self=0x1233b0 | systid=634 nice=0 sched=0/0 cgrp=default handle=1239344 @ dalvik.system.nativestart.run(native method) "heapworker" daemon prio=5 tid=5 vmwait | group="system" scount=1 dscount=0 s=n obj=0x436a13f8 self=0x118bc8 | systid=633 nice=0 sched=0/0 cgrp=default handle=1163392 @ dalvik.system.nativestart.run(native method) ----- end 632 -----
try this, when create new mediacontroller, override dispatchkeyevent pass event activity
@override public boolean dispatchkeyevent(keyevent event) { contentactivity.this.dispatchkeyevent(event); }
Comments
Post a Comment