From 3bc044cba40fd9a432276d063e6f4c08ca9ebc3e Mon Sep 17 00:00:00 2001 From: Xavi Artigas Date: Thu, 13 Sep 2012 16:35:51 +0200 Subject: [PATCH] Add a SeekBar to show current position / duration --- .../android-tutorial-1/jni/tutorial-1.c | 57 ++++++++++--------- .../android-tutorial-1/res/layout/main.xml | 12 +++- .../tutorial_1/Tutorial1.java | 6 +- 3 files changed, 45 insertions(+), 30 deletions(-) diff --git a/gst-sdk/tutorials/android-tutorial-1/jni/tutorial-1.c b/gst-sdk/tutorials/android-tutorial-1/jni/tutorial-1.c index c35141c312..c5d037d6ea 100755 --- a/gst-sdk/tutorials/android-tutorial-1/jni/tutorial-1.c +++ b/gst-sdk/tutorials/android-tutorial-1/jni/tutorial-1.c @@ -96,34 +96,6 @@ static void set_current_position (gint64 position, gint64 duration, CustomData * } } -static void error_cb (GstBus *bus, GstMessage *msg, CustomData *data) { - GError *err; - gchar *debug_info; - gchar *message_string; - - gst_message_parse_error (msg, &err, &debug_info); - message_string = g_strdup_printf ("Error received from element %s: %s", GST_OBJECT_NAME (msg->src), err->message); - g_clear_error (&err); - g_free (debug_info); - set_message (message_string, data); - g_free (message_string); - gst_element_set_state (data->pipeline, GST_STATE_NULL); -} - -static void eos_cb (GstBus *bus, GstMessage *msg, CustomData *data) { - set_message (GST_MESSAGE_TYPE_NAME (msg), data); - gst_element_set_state (data->pipeline, GST_STATE_NULL); -} - -static void state_changed_cb (GstBus *bus, GstMessage *msg, CustomData *data) { - GstState old_state, new_state, pending_state; - gst_message_parse_state_changed (msg, &old_state, &new_state, &pending_state); - if (GST_MESSAGE_SRC (msg) == GST_OBJECT (data->pipeline)) { - set_message (gst_element_state_get_name (new_state), data); - data->playing = (new_state == GST_STATE_PLAYING); - } -} - static gboolean refresh_ui (CustomData *data) { GstFormat fmt = GST_FORMAT_TIME; gint64 current = -1; @@ -146,6 +118,35 @@ static gboolean refresh_ui (CustomData *data) { return TRUE; } +static void error_cb (GstBus *bus, GstMessage *msg, CustomData *data) { + GError *err; + gchar *debug_info; + gchar *message_string; + + gst_message_parse_error (msg, &err, &debug_info); + message_string = g_strdup_printf ("Error received from element %s: %s", GST_OBJECT_NAME (msg->src), err->message); + g_clear_error (&err); + g_free (debug_info); + set_message (message_string, data); + g_free (message_string); + gst_element_set_state (data->pipeline, GST_STATE_NULL); +} + +static void eos_cb (GstBus *bus, GstMessage *msg, CustomData *data) { + set_message (GST_MESSAGE_TYPE_NAME (msg), data); + refresh_ui (data); + gst_element_set_state (data->pipeline, GST_STATE_NULL); +} + +static void state_changed_cb (GstBus *bus, GstMessage *msg, CustomData *data) { + GstState old_state, new_state, pending_state; + gst_message_parse_state_changed (msg, &old_state, &new_state, &pending_state); + if (GST_MESSAGE_SRC (msg) == GST_OBJECT (data->pipeline)) { + set_message (gst_element_state_get_name (new_state), data); + data->playing = (new_state == GST_STATE_PLAYING); + } +} + static void *app_function (void *userdata) { JavaVMAttachArgs args; GstBus *bus; diff --git a/gst-sdk/tutorials/android-tutorial-1/res/layout/main.xml b/gst-sdk/tutorials/android-tutorial-1/res/layout/main.xml index edf04e3d53..4c3e1000c2 100755 --- a/gst-sdk/tutorials/android-tutorial-1/res/layout/main.xml +++ b/gst-sdk/tutorials/android-tutorial-1/res/layout/main.xml @@ -34,7 +34,17 @@ android:id="@+id/textview_time" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_gravity="center_vertical" /> + android:layout_gravity="center_vertical" + android:layout_marginLeft="5dip" + android:layout_marginRight="5dip" /> + +