Wow, thank you for helping me through this. That was the little last
little bit I needed. I finally got the video playing successfully by
waiting until surfaceCreated to try calling prepare.

Though I have to admit that it feels like a lot of code to just to
play a video.

Thanks again, I hope this helps anyone else who was having similar
issues.

On Feb 14, 4:38 pm, Marco Nelissen <marc...@android.com> wrote:
> I think you have to use the SurfaceHolder callbacks to find out when the
> surface has actually been created, and *then* call setDisplay/prepare/start
>
> On Sat, Feb 14, 2009 at 4:28 PM, Brendan <raven...@gmail.com> wrote:
>
> > Thanks for all your help! I've been trying out your original idea, but
> > I still seem to be having issues.
>
> > I have moved the SurfaceView to main.xml, it looks like this:
>
> > <?xml version="1.0" encoding="utf-8"?>
> > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/
> > android"
> >    android:orientation="vertical"
> >    android:layout_width="fill_parent"
> >    android:layout_height="fill_parent"
>
> > <SurfaceView android:id="@+id/surface_view"
> > android:layout_height="fill_parent"
> > android:layout_width="fill_parent"></SurfaceView>
> > </LinearLayout>
>
> > And now onCreate looks like this:
>
> >       setContentView(R.layout.main);
> >       SurfaceView sv = (SurfaceView) findViewById
> > (R.id.surface_view);
>
> >       SurfaceHolder holder = sv.getHolder();
> >       holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
>
> >        try {
> >           MediaPlayer mp = new MediaPlayer();
> >           AssetFileDescriptor afd = getResources().openRawResourceFd
> > (R.raw.video);
> >           mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(),
> > afd.getLength());
> >           afd.close();
> >           mp.setDisplay(holder);
> >           mp.prepare();
> >           mp.start();
> >        } catch {...}
>
> > There are no errors ever thrown, but the process dies on mp.prepare()
> > without any warning or useful debug info. Is there potentially some
> > other way I should be setting the data source for a resource? Or
> > something else I'm forgetting to do that would make prepare
> > mysteriously kill the entire process?
>
> > On Feb 14, 3:16 pm, Marco Nelissen <marc...@android.com> wrote:
> > > On Sat, Feb 14, 2009 at 3:01 PM, Brendan <raven...@gmail.com> wrote:
>
> > > > Wow that sounds really convenient. Since the signature of the
> > > > MediaPlayer.create() that takes a SurfaceHolder requires the second
> > > > argument to be a URI and not a resource id, I tried creating a URI for
> > > > the resource by doing this:
>
> > > Oh, right, of course. My original comment stands then :)
> > > You'll have to use "new MediaPlayer" instead of the MediaPlayer.create
> > > convenience method.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to