summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLikai Ding <likaid@codeaurora.org>2013-08-19 15:04:18 +0800
committerXiaojing Zhang <zhangx@codeaurora.org>2014-11-04 20:37:50 -0800
commit85963d969c149b9ba5e5681524e520b8b8afba08 (patch)
tree42fa492e598b3a6e39e7a6cd3b55b735bf201070
parentcecd51ead6cace89db4506df96b7419502f64b61 (diff)
downloadandroid_packages_apps_Gallery2-85963d969c149b9ba5e5681524e520b8b8afba08.tar.gz
android_packages_apps_Gallery2-85963d969c149b9ba5e5681524e520b8b8afba08.tar.bz2
android_packages_apps_Gallery2-85963d969c149b9ba5e5681524e520b8b8afba08.zip
Gallery2: support loop/single video play mode
This change allows a video to be played repeatedly. It also introduces an extension framework. Change-Id: I5566192f138c1f0fd889b85496dd27fbf2aed10d CRs-Fixed: 507973
-rw-r--r--[-rwxr-xr-x]res/drawable-hdpi/ic_menu_loop.pngbin2349 -> 2349 bytes
-rw-r--r--[-rwxr-xr-x]res/drawable-hdpi/ic_menu_unloop.pngbin1814 -> 1814 bytes
-rw-r--r--[-rwxr-xr-x]res/drawable-mdpi/ic_menu_loop.pngbin2048 -> 2048 bytes
-rw-r--r--[-rwxr-xr-x]res/drawable-mdpi/ic_menu_unloop.pngbin1593 -> 1593 bytes
-rw-r--r--[-rwxr-xr-x]res/drawable-xhdpi/ic_menu_loop.pngbin3573 -> 3573 bytes
-rw-r--r--[-rwxr-xr-x]res/drawable-xhdpi/ic_menu_unloop.pngbin2465 -> 2465 bytes
-rw-r--r--res/values-zh-rCN/codeaurora_strings.xml5
-rwxr-xr-xres/values-zh-rCN/qcom_strings.xml125
-rw-r--r--res/values-zh-rTW/codeaurora_strings.xml5
-rwxr-xr-xres/values-zh-rTW/qcom_strings.xml107
-rwxr-xr-x[-rw-r--r--]res/values/bool.xml1
-rw-r--r--res/values/codeaurora_strings.xml5
-rwxr-xr-xres/values/qcom_strings.xml148
-rw-r--r--src/com/android/gallery3d/app/MovieActivity.java52
-rw-r--r--src/com/android/gallery3d/app/MoviePlayer.java112
-rwxr-xr-xsrc/com/qcom/gallery3d/ext/IActivityHooker.java118
-rwxr-xr-xsrc/com/qcom/gallery3d/ext/IMoviePlayer.java36
-rwxr-xr-xsrc/com/qcom/gallery3d/video/ExtensionHelper.java88
-rw-r--r--[-rwxr-xr-x]src/org/codeaurora/gallery3d/ext/ActivityHooker.java (renamed from src/com/qcom/gallery3d/ext/ActivityHooker.java)33
-rw-r--r--[-rwxr-xr-x]src/org/codeaurora/gallery3d/ext/ActivityHookerGroup.java (renamed from src/com/qcom/gallery3d/ext/ActivityHookerGroup.java)66
-rw-r--r--src/org/codeaurora/gallery3d/ext/IActivityHooker.java99
-rw-r--r--[-rwxr-xr-x]src/org/codeaurora/gallery3d/ext/IMovieItem.java (renamed from src/com/qcom/gallery3d/ext/IMovieItem.java)20
-rw-r--r--src/org/codeaurora/gallery3d/ext/IMoviePlayer.java17
-rw-r--r--[-rwxr-xr-x]src/org/codeaurora/gallery3d/ext/MovieItem.java (renamed from src/com/qcom/gallery3d/ext/MovieItem.java)86
-rw-r--r--[-rwxr-xr-x]src/org/codeaurora/gallery3d/ext/MovieUtils.java (renamed from src/com/qcom/gallery3d/ext/MovieUtils.java)29
-rwxr-xr-xsrc/org/codeaurora/gallery3d/video/ExtensionHelper.java27
-rw-r--r--[-rwxr-xr-x]src/org/codeaurora/gallery3d/video/LoopVideoHooker.java (renamed from src/com/qcom/gallery3d/video/LoopVideoHooker.java)33
-rw-r--r--[-rwxr-xr-x]src/org/codeaurora/gallery3d/video/MovieHooker.java (renamed from src/com/qcom/gallery3d/video/MovieHooker.java)28
28 files changed, 437 insertions, 803 deletions
diff --git a/res/drawable-hdpi/ic_menu_loop.png b/res/drawable-hdpi/ic_menu_loop.png
index add463382..add463382 100755..100644
--- a/res/drawable-hdpi/ic_menu_loop.png
+++ b/res/drawable-hdpi/ic_menu_loop.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_unloop.png b/res/drawable-hdpi/ic_menu_unloop.png
index 3140051d2..3140051d2 100755..100644
--- a/res/drawable-hdpi/ic_menu_unloop.png
+++ b/res/drawable-hdpi/ic_menu_unloop.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_menu_loop.png b/res/drawable-mdpi/ic_menu_loop.png
index 688b2c564..688b2c564 100755..100644
--- a/res/drawable-mdpi/ic_menu_loop.png
+++ b/res/drawable-mdpi/ic_menu_loop.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_menu_unloop.png b/res/drawable-mdpi/ic_menu_unloop.png
index e47496414..e47496414 100755..100644
--- a/res/drawable-mdpi/ic_menu_unloop.png
+++ b/res/drawable-mdpi/ic_menu_unloop.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_menu_loop.png b/res/drawable-xhdpi/ic_menu_loop.png
index e664915ce..e664915ce 100755..100644
--- a/res/drawable-xhdpi/ic_menu_loop.png
+++ b/res/drawable-xhdpi/ic_menu_loop.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_menu_unloop.png b/res/drawable-xhdpi/ic_menu_unloop.png
index 89d1da2bc..89d1da2bc 100755..100644
--- a/res/drawable-xhdpi/ic_menu_unloop.png
+++ b/res/drawable-xhdpi/ic_menu_unloop.png
Binary files differ
diff --git a/res/values-zh-rCN/codeaurora_strings.xml b/res/values-zh-rCN/codeaurora_strings.xml
new file mode 100644
index 000000000..9e9b535e7
--- /dev/null
+++ b/res/values-zh-rCN/codeaurora_strings.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="loop">"循环"</string>
+ <string name="single">"单次"</string>
+</resources>
diff --git a/res/values-zh-rCN/qcom_strings.xml b/res/values-zh-rCN/qcom_strings.xml
deleted file mode 100755
index 1d40e59ec..000000000
--- a/res/values-zh-rCN/qcom_strings.xml
+++ /dev/null
@@ -1,125 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- Strings for step option settins -->
- <string name="setp_option_name">步长</string>
- <string name="step_option_desc">定制快进/快退步长</string>
- <string name="setp_option_three_second">3秒</string>
- <string name="setp_option_six_second">6秒</string>
-
- <string name="camera_print">"打印"</string>
- <string name="no_way_to_print">"无可用打印文件的应用程序"</string>
- <string name="printFile">"打印文件方式"</string>
- <string name="no_storage_title">"无存储"</string>
- <string name="no_storage_message">"请插入SD卡"</string>
- <string name="load_image_fail">"加载图片失败"</string>
-
- <!--STRING TRANSLATION START [add for ICS porting streaming] -->
- <string name="proxy_host">地址</string>
- <string name="proxy_port">端口</string>
- <string name="apn_settings">"接入点名称"</string>
- <string name="rtsp_proxy_settings">"RTSP 代理设置"</string>
- <string name="rtsp_proxy_settings_summary">"设置 RTSP 代理服务器的地址和端口"</string>
- <string name="enable_rtsp_proxy">"启用 RTSP 代理"</string>
- <string name="enable_rtsp_proxy_summary">"打开/关闭 RTSP 代理"</string>
- <string name="http_proxy_settings">"HTTP 代理设置"</string>
- <string name="http_proxy_settings_summary">"设置 HTTP 代理服务器的地址和端口"</string>
- <string name="enable_http_proxy">"启用 HTTP 代理"</string>
- <string name="enable_http_proxy_summary">"打开/关闭 HTTP 代理"</string>
- <string name="apn_settings_summary">"当前SIM卡:%1$s\n当前接入点名称:%2$s"</string>
- <string name="apn_settings_not_valid">"SIM卡数据连接已关闭,无法设置接入点名称"</string>
- <string name="udp_port_settings">"RTP/RTCP 端口范围"</string>
- <string name="udp_port_settings_summary">"设置最大最小端口号"</string>
- <string name="max_udp_port">"最大端口号"</string>
- <string name="min_udp_port">"最小端口号"</string>
- <string name="server_timeout_title">"服务器超时"</string>
- <string name="server_timeout_message">"是否重新连接服务器以播放该视频?"</string>
- <string name="input_url">"输入 URL"</string>
- <string name="streaming_settings">"流媒体设置"</string>
- <string name="VideoView_info_text_video_not_supported">"这个视频不被支持。"</string>
- <string name="VideoView_error_text_cannot_connect_retry">"连接失败,正在尝试第%1$d次重连..."</string>
- <string name="stop">"停止"</string>
- <string name="loop">"循环"</string>
- <string name="single">"单次"</string>
- <!--STRING TRANSLATION END [add for ICS porting streaming] -->
-
- <string name="bookmark_add">"添加书签"</string>
- <string name="bookmark_display">"显示书签"</string>
- <string name="bookmark_empty">"无书签"</string>
- <string name="bookmark_exist">"已存在相同书签"</string>
- <string name="bookmark_add_success">"添加书签成功"</string>
- <string name="bookmark_list">"书签列表"</string>
- <string name="bookmark_title">"标题"</string>
- <string name="bookmark_location">"地址"</string>
- <string name="http_buffer_size">"HTTP缓冲大小"</string>
- <string name="http_buffer_size_summary">"设置HTTP缓冲大小 "</string>
- <string name="http_buffer_size_text">"当前HTTP缓冲大小: %1$d(秒)"</string>
- <string name="rtsp_buffer_size">"RTSP缓冲大小"</string>
- <string name="rtsp_buffer_size_summary">"设置RTSP缓冲大小"</string>
- <string name="rtsp_buffer_size_text">"当前RTSP缓冲大小: %1$d(秒)"</string>
- <string name="buffer_size_tip">"有效值范围: %1$d - %2$d 秒"</string>
- <string name="media_detail">"媒体详情"</string>
- <string name="detail_title">"标题: %1$s"</string>
- <string name="detail_copyright">"版权: %1$s"</string>
- <string name="detail_session">"会话信息: %1$s"</string>
- <string name="stereo">"立体声"</string>
- <string name="single_track">"单声道"</string>
- <string name="delete_all">"删除所有"</string>
- <string name="default_title">"默认标题"</string>
- <string name="next">"下一个"</string>
- <string name="previous">"上一个"</string>
-
- <!--strings for MAV viewer(enhancement)-->
- <string name="mav_firstRunTitle">"如何查看多视角图片"</string>
- <string name="mav_firstRunText">"左右滑动以查看多视角图片"</string>
-
- <!-- strings for stereo 3D support -->
- <string name="stereo3d_album_name">"3D 媒体"</string>
- <string name="stereo3d_mode_switchto_2d">"切换到2D模式"</string>
- <string name="stereo3d_mode_switchto_3d">"切换到3D模式"</string>
- <string name="stereo3d_convert2d_dialog_title">"转换为2D"</string>
- <string name="stereo3d_convert2d_dialog_text">"3D图片不支持\"<xliff:g id="operation">%s</xliff:g>\" 。图片会被转换为2D."</string>
- <string name="stereo3d_convert2d_progress_text">"正在转换为2D..."</string>
- <string name="stereo3d_pan_firstrun_title">"如何查看3D全景图片"</string>
- <string name="stereo3d_pan_firstrun_text">"左右滑动以查看3D全景图片。"</string>
- <string name="stereo3d_share_convert_text_single">"这是3D图片。若要继续分享,它会被转换成2D。"</string>
- <string name="stereo3d_share_convert_text_multiple">"选中图片中包含3D图片。若要继续分享,它们会被转换成2D。"</string>
- <string name="stereo3d_share_dialog_title">"以3D或2D分享"</string>
- <string name="stereo3d_share_dialog_text_single">"这是3D图片。接收者可能无法正常浏览此图片。"</string>
- <string name="stereo3d_share_dialog_text_multiple">"选中图片中包含3D图片。接收者可能无法正常浏览这些图片。"</string>
- <string name="stereo3d_share_dialog_button_2d">"以2D分享"</string>
- <string name="stereo3d_share_dialog_button_3d">"以3D分享"</string>
- <string name="stereo3d_attach_dialog_title">"以3D添加附件"</string>
- <string name="stereo3d_attach_dialog_button_2d">"以2D添加"</string>
- <string name="stereo3d_attach_dialog_button_3d">"以3D添加"</string>
-
- <!-- strings for stereo wallpaper support -->
- <string name="stereo3d_preview_title">"预览照片"</string>
- <string name="stereo3d_preview_button_set">"设置"</string>
- <string name="stereo3d_set_wallpaper_fail">"3D壁纸设置失败"</string>
-
- <!-- strings for Photo widget failure handling -->
- <string name="widget_load_failed">"加载窗口小部件失败"</string>
-
- <!-- strings for background text shown on AlbumSetPage -->
- <string name="albumset_empty_text">"没有相册。"</string>
- <string name="rtp">RTP</string>
- <string name="rtcp">RTCP</string>
- <string name="min_port">最小端口:</string>
- <string name="max_port">最大端口:</string>
- <string name="buffer_size">缓存大小</string>
- <string name="apn">优先接入点</string>
- <string name="rtp_min_port">RTP最小端口</string>
- <string name="rtp_max_port">RTP最大端口</string>
- <string name="rtcp_min_port">RTCP最小端口</string>
- <string name="rtcp_max_port">RTCP最大端口</string>
- <string name="set_rtp_min_port">设置RTP最小端口</string>
- <string name="set_rtp_max_port">设置RTP最大端口</string>
- <string name="set_rtcp_min_port">设置RTCP最小端口</string>
- <string name="set_rtcp_max_port">设置RTCP最大端口</string>
- <string name="set_buffer_size">设置缓冲大小</string>
- <string name="set_apn">选择接入优先点</string>
-
- <string name="media_controller_live">直播</string>
- <string name="media_controller_playing">正在播放</string>
- <string name="media_controller_connecting">正在连接...</string>
-</resources>
diff --git a/res/values-zh-rTW/codeaurora_strings.xml b/res/values-zh-rTW/codeaurora_strings.xml
new file mode 100644
index 000000000..a25ec853a
--- /dev/null
+++ b/res/values-zh-rTW/codeaurora_strings.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="loop">"循環"</string>
+ <string name="single">"單次"</string>
+</resources>
diff --git a/res/values-zh-rTW/qcom_strings.xml b/res/values-zh-rTW/qcom_strings.xml
deleted file mode 100755
index 5ba3a3751..000000000
--- a/res/values-zh-rTW/qcom_strings.xml
+++ /dev/null
@@ -1,107 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- Strings for step option settins -->
- <string name="setp_option_name">步長</string>
- <string name="step_option_desc">定制快進/快退步長</string>
- <string name="setp_option_three_second">3秒</string>
- <string name="setp_option_six_second">>6秒</string>
- <!-- Strings for BPP -->
- <string name="camera_print">"列印"</string>
- <string name="no_way_to_print">>"無可用列印檔案的應用程式"</string>
- <string name="printFile">"列印檔案方式"</string>
-
- <string name="no_storage_title">無儲存裝置</string>
- <string name="no_storage_message">請插入 SD 卡</string>
- <string name="load_image_fail">無法載入影像</string>
-
- <!--STRING TRANSLATION START [add for ICS porting streaming] -->
- <string name="proxy_host">主機</string>
- <string name="proxy_port">連接埠</string>
- <string name="apn_settings" msgid="9043423184895642077">"存取點名稱 (APN)"</string>
- <string name="rtsp_proxy_settings">"RTSP Proxy 設定"</string>
- <string name="rtsp_proxy_settings_summary">"設定並管理 RTSP Proxy 設定"</string>
- <string name="enable_rtsp_proxy">"啟用 RTSP Proxy"</string>
- <string name="enable_rtsp_proxy_summary">"啟用/停用 RTSP Proxy"</string>
- <string name="http_proxy_settings">"HTTP Proxy 設定"</string>
- <string name="http_proxy_settings_summary">"設定並管理 HTTP Proxy 設定"</string>
- <string name="enable_http_proxy">"啟用 HTTP Proxy"</string>
- <string name="enable_http_proxy_summary">"啟用/停用 HTTP Proxy"</string>
- <string name="apn_settings_summary">"目前的 SIM 卡:%1$s\n目前的 APN:%2$s"</string>
- <string name="apn_settings_not_valid">"已關閉 SIM 卡的資料連線,無法設定 APN"</string>
- <string name="udp_port_settings">"RTP/RTCP 連接埠範圍"</string>
- <string name="udp_port_settings_summary">"設定連接埠數量上限和下限"</string>
- <string name="max_udp_port">"連接埠數量上限"</string>
- <string name="min_udp_port">"連接埠數量下限"</string>
- <string name="server_timeout_title">"伺服器逾時"</string>
- <string name="server_timeout_message">"是否重新連線伺服器並播放視訊?"</string>
- <string name="input_url">"輸入 URL"</string>
- <string name="streaming_settings">"串流設定"</string>
- <string name="VideoView_info_text_video_not_supported">"不支援此影片。"</string>
- <string name="VideoView_error_text_cannot_connect_retry">"連線失敗,正在嘗試重新連線 %1$d..."</string>
- <string name="stop">"停止"</string>
- <string name="loop">"循環"</string>
- <string name="single">"單次"</string>
- <!--STRING TRANSLATION END [add for ICS porting streaming] -->
-
- <string name="bookmark_add">"添加書簽"</string>
- <string name="bookmark_display">"顯示書簽"</string>
- <string name="bookmark_empty">"無書簽"</string>
- <string name="bookmark_exist">"已存在相同書簽"</string>
- <string name="bookmark_add_success">"添加書簽成功"</string>
- <string name="bookmark_list">"書簽列表"</string>
- <string name="bookmark_title">"標題"</string>
- <string name="bookmark_location">"位置"</string>
- <string name="http_buffer_size">"HTTP緩衝大小"</string>
- <string name="http_buffer_size_summary">"設置HTTP緩衝大小"</string>
- <string name="http_buffer_size_text">"當前HTTP緩衝大小: %1$d(秒)"</string>
- <string name="rtsp_buffer_size">"RTSP緩衝大小"</string>
- <string name="rtsp_buffer_size_summary">"設置RTSP緩衝大小"</string>
- <string name="rtsp_buffer_size_text">"當前RTSP緩衝大小: %1$d(秒)"</string>
- <string name="buffer_size_tip">"有效值範圍: %1$d - %2$d 秒"</string>
- <string name="media_detail">"媒體詳情"</string>
- <string name="detail_title">"標題: %1$s"</string>
- <string name="detail_copyright">"版權: %1$s"</string>
- <string name="detail_session">"會話信息: %1$s"</string>
- <string name="stereo">"立體聲"</string>
- <string name="single_track">"單聲道"</string>
- <string name="delete_all">"刪除所有"</string>
- <string name="default_title">"默認標題"</string>
- <string name="next">"下一個"</string>
- <string name="previous">"上一個"</string>
-
- <!--strings for MAV viewer(enhancement)-->
- <string name="mav_firstRunTitle">如何檢視多視角影像</string>
- <string name="mav_firstRunText">左右滑動檢視多視角影像</string>
-
- <!-- strings for stereo 3D support -->
- <string name="stereo3d_album_name">3D 媒體</string>
- <string name="stereo3d_mode_switchto_2d">切換成 2D 模式</string>
- <string name="stereo3d_mode_switchto_3d">切換成 3D 模式</string>
- <string name="stereo3d_convert2d_dialog_title">轉換成 2D</string>
- <string name="stereo3d_convert2d_dialog_text">\"<xliff:g id="operation">%s</xliff:g>\" 不支援 3D 影像。將轉換成 2D。</string>
- <string name="stereo3d_convert2d_progress_text">正在轉換成 2D…</string>
- <string name="stereo3d_pan_firstrun_title">如何檢視 3D 環景影像</string>
- <string name="stereo3d_pan_firstrun_text">左右滑動檢視 3D 環景影像。</string>
- <string name="stereo3d_share_convert_text_single">此為 3D 影像。若要繼續分享,會轉換成 2D。</string>
- <string name="stereo3d_share_convert_text_multiple">選取的影像包含 3D 影像。若要繼續分享,會轉換成 2D。</string>
- <string name="stereo3d_share_dialog_title">以 3D 或 2D 分享</string>
- <string name="stereo3d_share_dialog_text_single">此為 3D 影像。收件者可能無法正常檢視。</string>
- <string name="stereo3d_share_dialog_text_multiple">選取的影像包含 3D 影像。收件者可能無法正常檢視。</string>
- <string name="stereo3d_share_dialog_button_2d">以 2D 分享</string>
- <string name="stereo3d_share_dialog_button_3d">以 3D 分享</string>
- <string name="stereo3d_attach_dialog_title">以 3D 或 2D 方式附加</string>
- <string name="stereo3d_attach_dialog_button_2d">以 2D 方式附加</string>
- <string name="stereo3d_attach_dialog_button_3d">以 3D 方式附加</string>
-
- <!-- strings for stereo wallpaper support -->
- <string name="stereo3d_preview_title">預覽圖片</string>
- <string name="stereo3d_preview_button_set">"設定"</string>
- <string name="stereo3d_set_wallpaper_fail">3D 桌布設定失敗。</string>
-
- <!-- strings for Photo widget failure handling -->
- <string name="widget_load_failed">無法載入小工具</string>
-
- <!--strings for Picture Quality Tool support -->
-
-
-</resources>
diff --git a/res/values/bool.xml b/res/values/bool.xml
index 464842ab4..18aade1bb 100644..100755
--- a/res/values/bool.xml
+++ b/res/values/bool.xml
@@ -15,4 +15,5 @@
-->
<resources>
<bool name="show_action_bar_title">false</bool>
+ <bool name="loop">false</bool>
</resources> \ No newline at end of file
diff --git a/res/values/codeaurora_strings.xml b/res/values/codeaurora_strings.xml
new file mode 100644
index 000000000..e17c15492
--- /dev/null
+++ b/res/values/codeaurora_strings.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="loop">"Loop"</string>
+ <string name="single">"Single"</string>
+</resources>
diff --git a/res/values/qcom_strings.xml b/res/values/qcom_strings.xml
deleted file mode 100755
index c2314dc64..000000000
--- a/res/values/qcom_strings.xml
+++ /dev/null
@@ -1,148 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- Strings for step option settins -->
- <string name="setp_option_name">Step</string>
- <string name="step_option_desc">Customize fast forward/backward step</string>
- <string name="setp_option_three_second">3 seconds</string>
- <string name="setp_option_six_second">6 seconds</string>
- <!-- Strings for BPP -->
- <string name="camera_print">Print</string>
- <string name="no_way_to_print">No application available to print the file(s).</string>
- <string name="printFile">Print file via</string>
-
- <!-- Title of no storage dialog -->
- <string name="no_storage_title">No Storage</string>
-
- <!-- Message of no storage dialog -->
- <string name="no_storage_message">Please insert an SD card</string>
-
- <!-- Toast for load image fail -->
- <string name="load_image_fail">Failed to load image</string>
-
- <!--STRING TRANSLATION START [add for ICS porting streaming] -->
- <string name="proxy_host">Host</string>
- <string name="proxy_port">Port</string>
- <string name="apn_settings">Access Point Names</string>
- <string name="rtsp_proxy_settings">"RTSP Proxy Settings"</string>
- <string name="rtsp_proxy_settings_summary">"Setup and manage RTSP proxy settings"</string>
- <string name="enable_rtsp_proxy">"Enable RTSP proxy"</string>
- <string name="enable_rtsp_proxy_summary">"Enable/Disable RTSP proxy"</string>
- <string name="http_proxy_settings">"HTTP Proxy Settings"</string>
- <string name="http_proxy_settings_summary">"Setup and manage HTTP proxy settings"</string>
- <string name="enable_http_proxy">"Enable HTTP proxy"</string>
- <string name="enable_http_proxy_summary">"Enable/Disable HTTP proxy"</string>
- <string name="apn_settings_summary">"Current SIM: %1$s\nCurrent APN: %2$s"</string>
- <string name="apn_settings_not_valid">"SIM's Data Connectivity is closed, cann't set APN"</string>
- <string name="udp_port_settings">"RTP/RTCP Port Range"</string>
- <string name="udp_port_settings_summary">"Set Max and Min Port Number"</string>
- <string name="max_udp_port">"Max Port Number"</string>
- <string name="min_udp_port">"Min Port Number"</string>
- <string name="server_timeout_title">"Server Timeout"</string>
- <string name="server_timeout_message">"Reconnect the server to play the video or not?"</string>
- <string name="input_url">"Input URL"</string>
- <string name="streaming_settings">"Streaming Settings"</string>
- <string name="VideoView_info_text_video_not_supported">"This video is not supported."</string>
- <string name="VideoView_error_text_cannot_connect_retry">"Connection failed, try to reconnect %1$d..."</string>
- <string name="stop">"Stop"</string>
- <string name="loop">"Loop"</string>
- <string name="single">"Single"</string>
- <!--STRING TRANSLATION END [add for ICS porting streaming] -->
-
- <string name="bookmark_add">"Add bookmark"</string>
- <string name="bookmark_display">"Show bookmarks"</string>
- <string name="bookmark_empty">"No bookmarks"</string>
- <string name="bookmark_exist">"Same bookmark in history"</string>
- <string name="bookmark_add_success">"Add bookmark success"</string>
- <string name="bookmark_list">"Bookmarks"</string>
- <string name="bookmark_title">"Title"</string>
- <string name="bookmark_location">"Location"</string>
- <string name="http_buffer_size">"HTTP buffer size"</string>
- <string name="http_buffer_size_summary">"Set HTTP buffer size for streaming"</string>
- <string name="http_buffer_size_text">"Current HTTP buffer size: %1$d(s)"</string>
- <string name="rtsp_buffer_size">"RTSP buffer size"</string>
- <string name="rtsp_buffer_size_summary">"Set RTSP buffer size for streaming"</string>
- <string name="rtsp_buffer_size_text">"Current RTSP buffer size: %1$d(s)"</string>
- <string name="buffer_size_tip">"Valid value range: %1$d - %2$d seconds"</string>
- <string name="media_detail">"Media details"</string>
- <string name="detail_title">"Title: %1$s"</string>
- <string name="detail_copyright">"Copyright: %1$s"</string>
- <string name="detail_session">"Session Info: %1$s"</string>
- <string name="stereo">"Stereo"</string>
- <string name="single_track">"Single track"</string>
- <string name="delete_all">"Delete all"</string>
- <string name="default_title">"Default title"</string>
- <string name="next">"Next"</string>
- <string name="previous">"Previous"</string>
-
- <!--strings for MAV viewer(enhancement)-->
- <string name="mav_firstRunTitle">How to view multi-angle image</string>
- <string name="mav_firstRunText">Swipe left or right to view multi-angle image</string>
-
- <!-- strings for stereo 3D support -->
- <string name="stereo3d_album_name">3D media</string>
- <string name="stereo3d_mode_switchto_2d">Switch to 2D mode</string>
- <string name="stereo3d_mode_switchto_3d">Switch to 3D mode</string>
- <string name="stereo3d_convert2d_dialog_title">Convert to 2D</string>
- <string name="stereo3d_convert2d_dialog_text">\"<xliff:g id="operation">%s</xliff:g>\" is not supported for 3D image. It will be converted to 2D.</string>
- <string name="stereo3d_convert2d_progress_text">Converting to 2D...</string>
- <string name="stereo3d_pan_firstrun_title">How to view 3D panorama image</string>
- <string name="stereo3d_pan_firstrun_text">Swipe left or right to view 3D panorama image.</string>
- <string name="stereo3d_share_convert_text_single">This is 3D image. To continue sharing, it will be converted to 2D.</string>
- <string name="stereo3d_share_convert_text_multiple">Selected images include 3D images. To continue sharing, they will be converted to 2D.</string>
- <string name="stereo3d_share_dialog_title">Share as 3D or 2D</string>
- <string name="stereo3d_share_dialog_text_single">This is 3D image. The recipient may not be able to view it properly.</string>
- <string name="stereo3d_share_dialog_text_multiple">Selected images include 3D images. The recipient may not be able to view them properly.</string>
- <string name="stereo3d_share_dialog_button_2d">Share as 2D</string>
- <string name="stereo3d_share_dialog_button_3d">Share as 3D</string>
- <string name="stereo3d_attach_dialog_title">Attach as 3D or 2D</string>
- <string name="stereo3d_attach_dialog_button_2d">Attach as 2D</string>
- <string name="stereo3d_attach_dialog_button_3d">Attach as 3D</string>
-
- <!-- strings for stereo wallpaper support -->
- <string name="stereo3d_preview_title">Preview picture</string>
- <string name="stereo3d_preview_button_set">Set</string>
- <string name="stereo3d_set_wallpaper_fail">Set 3D wallpaper failed.</string>
-
- <!-- strings for Photo widget failure handling -->
- <string name="widget_load_failed">Failed to load widget</string>
-
- <!--strings for Picture Quality Tool support -->
-
- <string name="pq_label" translatable="false">picture</string>
- <string name="pq_save_text" translatable="false">PQ</string>
- <string name="picture_quality" translatable="false">PQ</string>
- <string name="number_zero" translatable="false">" 0"</string>
- <string name="SkinTone" translatable="false">"Skin tone(Hue): 5"</string>
- <string name="GrassTone" translatable="false">"Grass tone(Hue): 5"</string>
- <string name="Sharpness" translatable="false">"Sharpness: 5"</string>
- <string name="SkyTone" translatable="false">"Sky tone(Hue): 5"</string>
- <string name="Color" translatable="false">"Global Sat.: 0"</string>
-
- <!-- strings for background text shown on AlbumSetPage -->
- <string name="Sky_tone_Sat" translatable="false">"Sky tone(Sat): 0"</string>
- <string name="Grass_tone_Sat" translatable="false">"Grass tone(Sat): 0"</string>
- <string name="Skin_tone_Sat" translatable="false">"Skin tone(Sat): 0"</string>
- <string name="SGS_number" translatable="false">"6"</string>
- <string name="rtp">RTP</string>
- <string name="rtcp">RTCP</string>
- <string name="min_port">min port:</string>
- <string name="max_port">max port:</string>
- <string name="buffer_size">Buffer Size</string>
- <string name="apn">Prefered APN</string>
- <string name="rtp_min_port">Min port</string>
- <string name="rtp_max_port">Max port</string>
- <string name="rtcp_min_port">Min port</string>
- <string name="rtcp_max_port">Max port</string>
- <string name="set_rtp_min_port">Set min port</string>
- <string name="set_rtp_max_port">Set max port</string>
- <string name="set_rtcp_min_port">Set min port</string>
- <string name="set_rtcp_max_port">Set max port</string>
- <string name="set_buffer_size">Set buffer size</string>
- <string name="set_apn">Select prefered apn</string>
- <string name="setting">Settings</string>
-
-
- <string name="media_controller_live">Live</string>
- <string name="media_controller_playing">Playing</string>
- <string name="media_controller_connecting">Connecting...</string>
-</resources>
diff --git a/src/com/android/gallery3d/app/MovieActivity.java b/src/com/android/gallery3d/app/MovieActivity.java
index 30b12243f..5152e5b39 100644
--- a/src/com/android/gallery3d/app/MovieActivity.java
+++ b/src/com/android/gallery3d/app/MovieActivity.java
@@ -62,6 +62,10 @@ import com.android.gallery3d.R;
import com.android.gallery3d.common.ApiHelper;
import com.android.gallery3d.common.Utils;
import com.android.gallery3d.ui.Knob;
+import org.codeaurora.gallery3d.ext.IActivityHooker;
+import org.codeaurora.gallery3d.ext.MovieItem;
+import org.codeaurora.gallery3d.ext.IMovieItem;
+import org.codeaurora.gallery3d.video.ExtensionHelper;
/**
* This activity plays a video from a specified URI.
@@ -79,7 +83,6 @@ public class MovieActivity extends Activity {
private MoviePlayer mPlayer;
private boolean mFinishOnCompletion;
private Uri mUri;
- private boolean mTreatUpAsBack;
private static final short BASSBOOST_MAX_STRENGTH = 1000;
private static final short VIRTUALIZER_MAX_STRENGTH = 1000;
@@ -100,6 +103,9 @@ public class MovieActivity extends Activity {
private Knob mBassBoostKnob;
private Knob mVirtualizerKnob;
+ private IMovieItem mMovieItem;
+ private IActivityHooker mMovieHooker;
+
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(final Context context, final Intent intent) {
@@ -153,11 +159,14 @@ public class MovieActivity extends Activity {
setSystemUiVisibility(rootView);
Intent intent = getIntent();
+
+ mMovieHooker = ExtensionHelper.getHooker(this);
+ initMovieInfo(intent);
+
initializeActionBar(intent);
mFinishOnCompletion = intent.getBooleanExtra(
MediaStore.EXTRA_FINISH_ON_COMPLETION, true);
- mTreatUpAsBack = intent.getBooleanExtra(KEY_TREAT_UP_AS_BACK, false);
- mPlayer = new MoviePlayer(rootView, this, intent.getData(), savedInstanceState,
+ mPlayer = new MoviePlayer(rootView, this, mMovieItem, savedInstanceState,
!mFinishOnCompletion) {
@Override
public void onCompletion() {
@@ -183,7 +192,10 @@ public class MovieActivity extends Activity {
// We set the background in the theme to have the launching animation.
// But for the performance (and battery), we remove the background here.
win.setBackgroundDrawable(null);
-
+ mMovieHooker.init(this, intent);
+ mMovieHooker.setParameter(null, mPlayer.getMoviePlayerExt());
+ mMovieHooker.setParameter(null, mMovieItem);
+ mMovieHooker.setParameter(null, mPlayer.getVideoSurface());
// Determine available/supported effects
final Descriptor[] effects = AudioEffect.queryEffects();
for (final Descriptor effect : effects) {
@@ -299,6 +311,14 @@ public class MovieActivity extends Activity {
return true;
}
});
+ mMovieHooker.onCreateOptionsMenu(menu);
+ return true;
+ }
+
+ @Override
+ public boolean onPrepareOptionsMenu(Menu menu) {
+ super.onPrepareOptionsMenu(menu);
+ mMovieHooker.onPrepareOptionsMenu(menu);
return true;
}
@@ -402,19 +422,16 @@ public class MovieActivity extends Activity {
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
- if (mTreatUpAsBack) {
- finish();
- } else {
- startActivity(new Intent(this, GalleryActivity.class));
- finish();
- }
+ // If click back up button, we will always finish current activity and
+ // back to previous one.
+ finish();
return true;
} else if (id == R.id.action_share) {
startActivity(Intent.createChooser(createShareIntent(),
getString(R.string.share)));
return true;
}
- return false;
+ return mMovieHooker.onOptionsItemSelected(item);
}
public void showHeadsetPlugToast() {
@@ -494,4 +511,17 @@ public class MovieActivity extends Activity {
return mPlayer.onKeyUp(keyCode, event)
|| super.onKeyUp(keyCode, event);
}
+
+ private boolean isSharable() {
+ String scheme = mUri.getScheme();
+ return ContentResolver.SCHEME_FILE.equals(scheme)
+ || (ContentResolver.SCHEME_CONTENT.equals(scheme) && MediaStore.AUTHORITY
+ .equals(mUri.getAuthority()));
+ }
+ private void initMovieInfo(Intent intent) {
+ Uri original = intent.getData();
+ String mimeType = intent.getType();
+ mMovieItem = new MovieItem(original, mimeType, null);
+ mMovieItem.setOriginalUri(original);
+ }
}
diff --git a/src/com/android/gallery3d/app/MoviePlayer.java b/src/com/android/gallery3d/app/MoviePlayer.java
index 962afeafb..09fd272ae 100644
--- a/src/com/android/gallery3d/app/MoviePlayer.java
+++ b/src/com/android/gallery3d/app/MoviePlayer.java
@@ -35,6 +35,7 @@ import android.os.Bundle;
import android.os.Handler;
import android.view.KeyEvent;
import android.view.MotionEvent;
+import android.view.SurfaceView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.VideoView;
@@ -44,6 +45,9 @@ import com.android.gallery3d.common.ApiHelper;
import com.android.gallery3d.common.BlobCache;
import com.android.gallery3d.util.CacheManager;
import com.android.gallery3d.util.GalleryUtils;
+import org.codeaurora.gallery3d.ext.IMoviePlayer;
+import org.codeaurora.gallery3d.ext.IMovieItem;
+import org.codeaurora.gallery3d.video.ExtensionHelper;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -75,6 +79,9 @@ public class MoviePlayer implements
// Otherwise, we pause the player.
private static final long RESUMEABLE_TIMEOUT = 3 * 60 * 1000; // 3 mins
+ public static final int STREAMING_LOCAL = 0;
+ private int mStreamingType = STREAMING_LOCAL;
+
private Context mContext;
private final VideoView mVideoView;
private final View mRootView;
@@ -97,6 +104,24 @@ public class MoviePlayer implements
private Virtualizer mVirtualizer;
+ private MoviePlayerExtension mPlayerExt = new MoviePlayerExtension();
+ private boolean mCanReplay;
+ private TState mTState = TState.PLAYING;
+ private IMovieItem mMovieItem;
+
+ private enum TState {
+ PLAYING,
+ PAUSED,
+ STOPED,
+ COMPELTED,
+ RETRY_ERROR
+ }
+
+ interface Restorable {
+ void onRestoreInstanceState(Bundle icicle);
+ void onSaveInstanceState(Bundle outState);
+ }
+
private final Runnable mPlayingChecker = new Runnable() {
@Override
public void run() {
@@ -117,18 +142,20 @@ public class MoviePlayer implements
};
public MoviePlayer(View rootView, final MovieActivity movieActivity,
- Uri videoUri, Bundle savedInstance, boolean canReplay) {
+ IMovieItem info, Bundle savedInstance, boolean canReplay) {
mContext = movieActivity.getApplicationContext();
mRootView = rootView;
mVideoView = (VideoView) rootView.findViewById(R.id.surface_view);
mBookmarker = new Bookmarker(movieActivity);
- mUri = videoUri;
mController = new MovieControllerOverlay(mContext);
((ViewGroup)rootView).addView(mController.getView());
mController.setListener(this);
mController.setCanReplay(canReplay);
+ init(info, canReplay);
+ mUri = mMovieItem.getUri();
+
mVideoView.setOnErrorListener(this);
mVideoView.setOnCompletionListener(this);
mVideoView.setVideoURI(mUri);
@@ -191,6 +218,7 @@ public class MoviePlayer implements
mResumeableTime = savedInstance.getLong(KEY_RESUMEABLE_TIME, Long.MAX_VALUE);
mVideoView.start();
mVideoView.suspend();
+ onRestoreInstanceState(savedInstance);
mHasPaused = true;
} else {
final Integer bookmark = mBookmarker.getBookmark(mUri);
@@ -242,6 +270,7 @@ public class MoviePlayer implements
public void onSaveInstanceState(Bundle outState) {
outState.putInt(KEY_VIDEO_POSITION, mVideoPosition);
outState.putLong(KEY_RESUMEABLE_TIME, mResumeableTime);
+ onSaveInstanceStateMore(outState);
}
private void showResumeDialog(Context context, final int bookmark) {
@@ -332,6 +361,11 @@ public class MoviePlayer implements
}
mVideoView.start();
+ //we may start video from stopVideo,
+ //this case, we should reset canReplay flag according canReplay and loop
+ boolean loop = mPlayerExt.getLoop();
+ boolean canReplay = loop ? loop : mCanReplay;
+ mController.setCanReplay(canReplay);
setProgress();
}
@@ -358,8 +392,15 @@ public class MoviePlayer implements
@Override
public void onCompletion(MediaPlayer mp) {
- mController.showEnded();
- onCompletion();
+ if (mPlayerExt.getLoop()) {
+ onReplay();
+ } else { //original logic
+ mTState = TState.COMPELTED;
+ if (mCanReplay) {
+ mController.showEnded();
+ }
+ onCompletion();
+ }
}
public void onCompletion() {
@@ -459,6 +500,11 @@ public class MoviePlayer implements
|| keyCode == KeyEvent.KEYCODE_MEDIA_PAUSE;
}
+ private void init(IMovieItem info, boolean canReplay) {
+ mCanReplay = canReplay;
+ mMovieItem = info;
+ }
+
// We want to pause when the headset is unplugged.
private class AudioBecomingNoisyReceiver extends BroadcastReceiver {
@@ -484,6 +530,64 @@ public class MoviePlayer implements
public void setOnPreparedListener(MediaPlayer.OnPreparedListener listener) {
mVideoView.setOnPreparedListener(listener);
}
+
+ public boolean isLocalFile() {
+ if (mStreamingType == STREAMING_LOCAL) {
+ return true;
+ }
+ return false;
+ }
+
+ public IMoviePlayer getMoviePlayerExt() {
+ return mPlayerExt;
+ }
+
+ public SurfaceView getVideoSurface() {
+ return mVideoView;
+ }
+
+ private void onSaveInstanceStateMore(Bundle outState) {
+
+ mPlayerExt.onSaveInstanceState(outState);
+ }
+
+ private void onRestoreInstanceState(Bundle icicle) {
+
+ mPlayerExt.onRestoreInstanceState(icicle);
+ }
+
+ private class MoviePlayerExtension implements IMoviePlayer, Restorable {
+
+ private static final String KEY_VIDEO_IS_LOOP = "video_is_loop";
+
+ private boolean mIsLoop;
+
+ @Override
+ public boolean getLoop() {
+ return mIsLoop;
+ }
+
+ @Override
+ public void setLoop(boolean loop) {
+ if (isLocalFile()) {
+ mIsLoop = loop;
+ mController.setCanReplay(loop);
+ }
+ }
+
+ @Override
+ public void onRestoreInstanceState(Bundle icicle) {
+ mIsLoop = icicle.getBoolean(KEY_VIDEO_IS_LOOP, false);
+ if (mIsLoop) {
+ mController.setCanReplay(true);
+ } // else will get can replay from intent.
+ }
+
+ @Override
+ public void onSaveInstanceState(Bundle outState) {
+ outState.putBoolean(KEY_VIDEO_IS_LOOP, mIsLoop);
+ }
+ };
}
class Bookmarker {
diff --git a/src/com/qcom/gallery3d/ext/IActivityHooker.java b/src/com/qcom/gallery3d/ext/IActivityHooker.java
deleted file mode 100755
index 3be707c6d..000000000
--- a/src/com/qcom/gallery3d/ext/IActivityHooker.java
+++ /dev/null
@@ -1,118 +0,0 @@
-package com.qcom.gallery3d.ext;
-
-import android.app.Activity;
-import android.content.Intent;
-import android.os.Bundle;
-import android.view.Menu;
-import android.view.MenuItem;
-
-/**
- * Activity action hooker class.
- * Host app's activity will call this hooker's functions in its lifecycle.
- * For example: HostActivity.onCreate()-->hooker.onCreate().
- * But void init(Activity context, Intent intent) will be called before other functions.
- * <br/>
- * IActivityHooker objects may show menus, but we should give a unique menu id to every menus.
- * Hooker can call getMenuActivityId(int) to get a global unique menu id to be used in menu.add(),
- * and can call getMenuOriginalId(int) to get the original menu id.
- * the example:
- * class Hooker implements IActivityHooker {
- * private static final int MENU_EXAMPLE = 1;
- * @Override
- * public boolean onCreateOptionsMenu(Menu menu) {
- * super.onCreateOptionsMenu(menu);
- * menu.add(0, getMenuActivityId(MENU_EXAMPLE), 0, android.R.string.ok);
- * return true;
- * }
- * @Override
- * public boolean onOptionsItemSelected(MenuItem item) {
- * switch(getMenuOriginalId(item.getItemId())) {
- * case MENU_EXAMPLE:
- * //do something
- * return true;
- * default:
- * return false;
- * }
- * }
- * }
- */
-public interface IActivityHooker {
- /**
- * Will be called in Host Activity.onCreate(Bundle savedInstanceState)
- * @param savedInstanceState
- */
- void onCreate(Bundle savedInstanceState);
- /**
- * Will be called in Host Activity.onStart()
- */
- void onStart();
- /**
- * Will be called in Host Activity.onStop()
- */
- void onStop();
- /**
- * Will be called in Host Activity.onPause()
- */
- void onPause();
- /**
- * Will be called in Host Activity.onResume()
- */
- void onResume();
- /**
- * Will be called in Host Activity.onDestroy()
- */
- void onDestroy();
- /**
- * Will be called in Host Activity.onCreateOptionsMenu(Menu menu)
- * @param menu
- * @return
- */
- boolean onCreateOptionsMenu(Menu menu);
- /**
- * Will be called in Host Activity.onPrepareOptionsMenu(Menu menu)
- * @param menu
- * @return
- */
- boolean onPrepareOptionsMenu(Menu menu);
- /**
- * Will be called in Host Activity.onOptionsItemSelected(MenuItem item)
- * @param item
- * @return
- */
- boolean onOptionsItemSelected(MenuItem item);
-
- /**
- * Should be called before any other functions.
- * @param context
- * @param intent
- */
- void init(Activity context, Intent intent);
- /**
- * @return return activity set by init(Activity context, Intent intent)
- */
- Activity getContext();
- /**
- * @return return intent set by init(Activity context, Intent intent)
- */
- Intent getIntent();
- /**
- * IActivityHooker objects may show menus, but we should give a unique menu id to every menus.
- * Hooker can call this function to get a global unique menu id to be used in menu.add()
- * @param id
- * @return
- */
- int getMenuActivityId(int id);
- /**
- * When onOptionsItemSelected is called, we can get menu's id from parameter.
- * You can get the original menu id by calling this function.
- * @param id
- * @return
- */
- int getMenuOriginalId(int id);
- /**
- * Host activity will call this function to set parameter to hooker activity.
- * @param key
- * @param value
- */
- void setParameter(String key, Object value);
-}
diff --git a/src/com/qcom/gallery3d/ext/IMoviePlayer.java b/src/com/qcom/gallery3d/ext/IMoviePlayer.java
deleted file mode 100755
index 3a353639c..000000000
--- a/src/com/qcom/gallery3d/ext/IMoviePlayer.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.qcom.gallery3d.ext;
-
-public interface IMoviePlayer {
- /**
- * add new bookmark Uri.
- */
- void addBookmark();
- /**
- * start current item and stop playing video.
- * @param item
- */
- void startNextVideo(IMovieItem item);
- /**
- * Loop current video.
- * @param loop
- */
- void setLoop(boolean loop);
- /**
- * Loop current video or not
- * @return
- */
- boolean getLoop();
- /**
- * Show video details.
- */
- void showDetail();
- /**
- * Can stop current video or not.
- * @return
- */
- boolean canStop();
- /**
- * Stop current video.
- */
- void stopVideo();
-}
diff --git a/src/com/qcom/gallery3d/video/ExtensionHelper.java b/src/com/qcom/gallery3d/video/ExtensionHelper.java
deleted file mode 100755
index ae667eeb5..000000000
--- a/src/com/qcom/gallery3d/video/ExtensionHelper.java
+++ /dev/null
@@ -1,88 +0,0 @@
-package com.qcom.gallery3d.video;
-
-import android.content.Context;
-
-import com.android.gallery3d.app.MovieActivity;
-import com.qcom.gallery3d.ext.ActivityHookerGroup;
-import com.qcom.gallery3d.ext.IActivityHooker;
-import com.qcom.gallery3d.ext.IMovieExtension;
-import com.qcom.gallery3d.ext.IMovieStrategy;
-import com.qcom.gallery3d.ext.MovieExtension;
-import com.qcom.gallery3d.ext.MovieStrategy;
-import com.qcom.gallery3d.ext.QcomLog;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class ExtensionHelper {
- private static final String TAG = "ExtensionHelper";
- private static final boolean LOG = true;
-
- private static List<IMovieExtension> sMovieExtensions;
- private static void ensureMovieExtension(final Context context) {
- if (sMovieExtensions == null) {
- sMovieExtensions = new ArrayList<IMovieExtension>();
- sMovieExtensions.add(new MovieExtension(MovieExtension.CMCC_EXTENSION_FUNCTIONS));
- }
- }
-
- public static IActivityHooker getHooker(final Context context) {
- ensureMovieExtension(context);
- final ActivityHookerGroup group = new ActivityHookerGroup();
- if (!(ExtensionHelper.getMovieStrategy(context).shouldEnableRewindAndForward())) {
- group.addHooker(new StopVideoHooker());//add it for common feature.
- }
- group.addHooker(new LoopVideoHooker()); //add it for common feature.
-
- for (final IMovieExtension ext : sMovieExtensions) { //add common feature in host app
- final List<Integer> list = ext.getFeatureList();
- if (list != null) {
- for (int i = 0, size = list.size(); i < size; i++) {
- final int feature = list.get(i);
- switch(feature) {
- case IMovieExtension.FEATURE_ENABLE_STOP:
- //group.addHooker(new StopVideoHooker());
- break;
- // case IMovieExtension.FEATURE_ENABLE_NOTIFICATION_PLUS:
- // group.addHooker(new NotificationPlusHooker());
- // break;
- case IMovieExtension.FEATURE_ENABLE_STREAMING:
- group.addHooker(new StreamingHooker());
- break;
- case IMovieExtension.FEATURE_ENABLE_BOOKMARK:
- group.addHooker(new BookmarkHooker());
- break;
- case IMovieExtension.FEATURE_ENABLE_VIDEO_LIST:
- group.addHooker(new MovieListHooker());
- break;
- case IMovieExtension.FEATURE_ENABLE_STEREO_AUDIO:
- group.addHooker(new StereoAudioHooker());
- break;
- case IMovieExtension.FEATURE_ENABLE_SETTINGS:
- group.addHooker(new StepOptionSettingsHooker());
- break;
- default:
- break;
- }
- }
- }
- }
- for (final IMovieExtension ext : sMovieExtensions) { //add other feature in plugin app
- final IActivityHooker hooker = ext.getHooker();
- if (hooker != null) {
- group.addHooker(hooker);
- }
- }
- for (int i = 0, count = group.size(); i < count; i++) {
- if (LOG) {
- QcomLog.v(TAG, "getHooker() [" + i + "]=" + group.getHooker(i));
- }
- }
- return group;
- }
-
- public static IMovieStrategy getMovieStrategy(final Context context) {
- return new MovieStrategy();
- }
-
-}
diff --git a/src/com/qcom/gallery3d/ext/ActivityHooker.java b/src/org/codeaurora/gallery3d/ext/ActivityHooker.java
index 3d1999bc1..039c5a04e 100755..100644
--- a/src/com/qcom/gallery3d/ext/ActivityHooker.java
+++ b/src/org/codeaurora/gallery3d/ext/ActivityHooker.java
@@ -1,21 +1,23 @@
-package com.qcom.gallery3d.ext;
+package org.codeaurora.gallery3d.ext;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
+
/**
* Default implemention class of IActivityHooker.
*/
public class ActivityHooker implements IActivityHooker {
+
private static final int MENU_MAX_NUMBER = 100;
private static int sMenuId = 1;
private int mMenuId;
private static Object sMenuLock = new Object();
private Activity mContext;
private Intent mIntent;
-
+
public ActivityHooker() {
synchronized (sMenuLock) {
sMenuId++;
@@ -32,13 +34,13 @@ public class ActivityHooker implements IActivityHooker {
public int getMenuOriginalId(int id) {
return id - mMenuId;
}
-
+
@Override
public void init(Activity context, Intent intent) {
mContext = context;
mIntent = intent;
}
-
+
@Override
public Activity getContext() {
return mContext;
@@ -48,34 +50,17 @@ public class ActivityHooker implements IActivityHooker {
public Intent getIntent() {
return mIntent;
}
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- }
- @Override
- public void onStart() {
- }
- @Override
- public void onResume() {
- }
- @Override
- public void onPause() {
- }
- @Override
- public void onStop() {
- }
- @Override
- public void onDestroy() {
- }
-
+
@Override
public boolean onCreateOptionsMenu(Menu menu) {
return false;
}
+
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return false;
}
+
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
return false;
diff --git a/src/com/qcom/gallery3d/ext/ActivityHookerGroup.java b/src/org/codeaurora/gallery3d/ext/ActivityHookerGroup.java
index b1da185fd..2e24aa688 100755..100644
--- a/src/com/qcom/gallery3d/ext/ActivityHookerGroup.java
+++ b/src/org/codeaurora/gallery3d/ext/ActivityHookerGroup.java
@@ -1,4 +1,4 @@
-package com.qcom.gallery3d.ext;
+package org.codeaurora.gallery3d.ext;
import android.app.Activity;
import android.content.Intent;
@@ -9,85 +9,41 @@ import android.view.MenuItem;
import java.util.ArrayList;
/**
- * The composite pattern class.
- * It will deliver every action to its leaf hookers.
+ * The composite pattern class. It will deliver every action to its leaf
+ * hookers.
*/
public class ActivityHookerGroup extends ActivityHooker {
private ArrayList<IActivityHooker> mHooks = new ArrayList<IActivityHooker>();
+
/**
* Add hooker to current group.
+ *
* @param hooker
* @return
*/
public boolean addHooker(IActivityHooker hooker) {
return mHooks.add(hooker);
}
+
/**
* Remove hooker from current group.
+ *
* @param hooker
* @return
*/
public boolean removeHooker(IActivityHooker hooker) {
return mHooks.remove(hooker);
}
- /**
- * Hooker size of current group.
- * @return
- */
- public int size() {
- return mHooks.size();
- }
+
/**
* Get hooker of requested location.
+ *
* @param index
* @return
*/
public IActivityHooker getHooker(int index) {
return mHooks.get(index);
}
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- for (IActivityHooker hook : mHooks) {
- hook.onCreate(savedInstanceState);
- }
- }
- @Override
- public void onStart() {
- super.onStart();
- for (IActivityHooker hook : mHooks) {
- hook.onStart();
- }
- }
- @Override
- public void onResume() {
- super.onResume();
- for (IActivityHooker hook : mHooks) {
- hook.onResume();
- }
- }
- @Override
- public void onPause() {
- super.onPause();
- for (IActivityHooker hook : mHooks) {
- hook.onPause();
- }
- }
- @Override
- public void onStop() {
- super.onStop();
- for (IActivityHooker hook : mHooks) {
- hook.onStop();
- }
- }
- @Override
- public void onDestroy() {
- super.onDestroy();
- for (IActivityHooker hook : mHooks) {
- hook.onDestroy();
- }
- }
@Override
public boolean onCreateOptionsMenu(Menu menu) {
@@ -101,6 +57,7 @@ public class ActivityHookerGroup extends ActivityHooker {
}
return handle;
}
+
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
@@ -113,6 +70,7 @@ public class ActivityHookerGroup extends ActivityHooker {
}
return handle;
}
+
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
@@ -133,7 +91,7 @@ public class ActivityHookerGroup extends ActivityHooker {
hook.setParameter(key, value);
}
}
-
+
@Override
public void init(Activity context, Intent intent) {
super.init(context, intent);
diff --git a/src/org/codeaurora/gallery3d/ext/IActivityHooker.java b/src/org/codeaurora/gallery3d/ext/IActivityHooker.java
new file mode 100644
index 000000000..fa1b5c0a0
--- /dev/null
+++ b/src/org/codeaurora/gallery3d/ext/IActivityHooker.java
@@ -0,0 +1,99 @@
+package org.codeaurora.gallery3d.ext;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.Menu;
+import android.view.MenuItem;
+
+/**
+ * Activity action hooker class. Host app's activity will call this hooker's
+ * functions in its lifecycle. For example:
+ * HostActivity.onCreate()-->hooker.onCreate(). But void init(Activity context,
+ * Intent intent) will be called before other functions. <br/>
+ * IActivityHooker objects may show menus, but we should give a unique menu id
+ * to every menus. Hooker can call getMenuActivityId(int) to get a global unique
+ * menu id to be used in menu.add(), and can call getMenuOriginalId(int) to get
+ * the original menu id. the example: class Hooker implements IActivityHooker {
+ * private static final int MENU_EXAMPLE = 1;
+ *
+ * @Override public boolean onCreateOptionsMenu(Menu menu) {
+ * super.onCreateOptionsMenu(menu); menu.add(0,
+ * getMenuActivityId(MENU_EXAMPLE), 0, android.R.string.ok); return
+ * true; }
+ * @Override public boolean onOptionsItemSelected(MenuItem item) {
+ * switch(getMenuOriginalId(item.getItemId())) { case MENU_EXAMPLE:
+ * //do something return true; default: return false; } } }
+ */
+public interface IActivityHooker {
+
+ /**
+ * Will be called in Host Activity.onCreateOptionsMenu(Menu menu)
+ *
+ * @param menu
+ * @return
+ */
+ boolean onCreateOptionsMenu(Menu menu);
+
+ /**
+ * Will be called in Host Activity.onPrepareOptionsMenu(Menu menu)
+ *
+ * @param menu
+ * @return
+ */
+ boolean onPrepareOptionsMenu(Menu menu);
+
+ /**
+ * Will be called in Host Activity.onOptionsItemSelected(MenuItem item)
+ *
+ * @param item
+ * @return
+ */
+ boolean onOptionsItemSelected(MenuItem item);
+
+ /**
+ * Should be called before any other functions.
+ *
+ * @param context
+ * @param intent
+ */
+ void init(Activity context, Intent intent);
+
+ /**
+ * @return return activity set by init(Activity context, Intent intent)
+ */
+ Activity getContext();
+
+ /**
+ * @return return intent set by init(Activity context, Intent intent)
+ */
+ Intent getIntent();
+
+ /**
+ * IActivityHooker objects may show menus, but we should give a unique menu
+ * id to every menus. Hooker can call this function to get a global unique
+ * menu id to be used in menu.add()
+ *
+ * @param id
+ * @return
+ */
+ int getMenuActivityId(int id);
+
+ /**
+ * When onOptionsItemSelected is called, we can get menu's id from
+ * parameter. You can get the original menu id by calling this function.
+ *
+ * @param id
+ * @return
+ */
+ int getMenuOriginalId(int id);
+
+ /**
+ * Host activity will call this function to set parameter to hooker
+ * activity.
+ *
+ * @param key
+ * @param value
+ */
+ void setParameter(String key, Object value);
+}
diff --git a/src/com/qcom/gallery3d/ext/IMovieItem.java b/src/org/codeaurora/gallery3d/ext/IMovieItem.java
index 6c7f4dd20..dece4e803 100755..100644
--- a/src/com/qcom/gallery3d/ext/IMovieItem.java
+++ b/src/org/codeaurora/gallery3d/ext/IMovieItem.java
@@ -1,6 +1,7 @@
-package com.qcom.gallery3d.ext;
+package org.codeaurora.gallery3d.ext;
import android.net.Uri;
+
/**
* Movie info class
*/
@@ -9,34 +10,39 @@ public interface IMovieItem {
* @return movie Uri, it's may be not the original Uri.
*/
Uri getUri();
+
/**
- *
* @return MIME type of video
*/
String getMimeType();
+
/**
- *
* @return title of video
*/
String getTitle();
+
/**
- *
* @return whether error occured or not.
*/
boolean getError();
/**
* set title of video
+ *
* @param title
*/
void setTitle(String title);
+
/**
* set video Uri
+ *
* @param uri
*/
void setUri(Uri uri);
+
/**
* Set MIME type of video
+ *
* @param mimeType
*/
void setMimeType(String mimeType);
@@ -45,14 +51,16 @@ public interface IMovieItem {
* Set error occured flag
*/
void setError();
+
/**
- *
* @return return original Uri of video.
*/
Uri getOriginalUri();
+
/**
* Set video original Uri.
+ *
* @param uri
*/
void setOriginalUri(Uri uri);
-} \ No newline at end of file
+}
diff --git a/src/org/codeaurora/gallery3d/ext/IMoviePlayer.java b/src/org/codeaurora/gallery3d/ext/IMoviePlayer.java
new file mode 100644
index 000000000..9248ebdf4
--- /dev/null
+++ b/src/org/codeaurora/gallery3d/ext/IMoviePlayer.java
@@ -0,0 +1,17 @@
+package org.codeaurora.gallery3d.ext;
+
+public interface IMoviePlayer {
+ /**
+ * Loop current video.
+ *
+ * @param loop
+ */
+ void setLoop(boolean loop);
+
+ /**
+ * Loop current video or not
+ *
+ * @return
+ */
+ boolean getLoop();
+}
diff --git a/src/com/qcom/gallery3d/ext/MovieItem.java b/src/org/codeaurora/gallery3d/ext/MovieItem.java
index 2da1c2628..c6d53d031 100755..100644
--- a/src/com/qcom/gallery3d/ext/MovieItem.java
+++ b/src/org/codeaurora/gallery3d/ext/MovieItem.java
@@ -1,4 +1,4 @@
-package com.qcom.gallery3d.ext;
+package org.codeaurora.gallery3d.ext;
import android.net.Uri;
import android.provider.MediaStore;
@@ -6,80 +6,80 @@ import android.provider.MediaStore;
public class MovieItem implements IMovieItem {
private static final String TAG = "MovieItem";
private static final boolean LOG = true;
-
+
private Uri mUri;
private String mMimeType;
private String mTitle;
private boolean mError;
-// private int mStereoType;
+ // private int mStereoType;
private Uri mOriginal;
-
+
private static final int STREO_TYPE_2D = 1;
-
+
public MovieItem(Uri uri, String mimeType, String title, int stereoType) {
mUri = uri;
mMimeType = mimeType;
mTitle = title;
-// mStereoType = stereoType;
+ // mStereoType = stereoType;
mOriginal = uri;
}
-
+
public MovieItem(String uri, String mimeType, String title, int stereoType) {
this(Uri.parse(uri), mimeType, title, stereoType);
}
-
+
public MovieItem(Uri uri, String mimeType, String title) {
- this(uri, mimeType, title, STREO_TYPE_2D);
+ this(uri, mimeType, title, STREO_TYPE_2D);
}
-
+
public MovieItem(String uri, String mimeType, String title) {
this(Uri.parse(uri), mimeType, title);
}
-
+
@Override
public Uri getUri() {
return mUri;
}
-
+
@Override
public String getMimeType() {
return mMimeType;
}
-
+
@Override
public String getTitle() {
return mTitle;
}
-
+
@Override
public boolean getError() {
return mError;
}
-
-// @Override
-// public int getStereoType() {
-// return mStereoType;
-// }
-
+
+ // @Override
+ // public int getStereoType() {
+ // return mStereoType;
+ // }
+
public void setTitle(String title) {
mTitle = title;
}
-
+
@Override
public void setUri(Uri uri) {
mUri = uri;
}
-
+
@Override
public void setMimeType(String mimeType) {
mMimeType = mimeType;
}
-
-// @Override
-// public void setStereoType(int stereoType) {
-// mStereoType = stereoType;
-// }
-
+
+ // @Override
+ // public void setStereoType(int stereoType) {
+ // mStereoType = stereoType;
+ // }
+
@Override
public void setError() {
mError = true;
@@ -94,22 +94,22 @@ public class MovieItem implements IMovieItem {
public void setOriginalUri(Uri uri) {
mOriginal = uri;
}
-
+
@Override
public String toString() {
return new StringBuilder().append("MovieItem(uri=")
- .append(mUri)
- .append(", mime=")
- .append(mMimeType)
- .append(", title=")
- .append(mTitle)
- .append(", error=")
- .append(mError)
-// .append(", support3D=")
-// .append(mStereoType)
- .append(", mOriginal=")
- .append(mOriginal)
- .append(")")
- .toString();
+ .append(mUri)
+ .append(", mime=")
+ .append(mMimeType)
+ .append(", title=")
+ .append(mTitle)
+ .append(", error=")
+ .append(mError)
+ // .append(", support3D=")
+ // .append(mStereoType)
+ .append(", mOriginal=")
+ .append(mOriginal)
+ .append(")")
+ .toString();
}
-} \ No newline at end of file
+}
diff --git a/src/com/qcom/gallery3d/ext/MovieUtils.java b/src/org/codeaurora/gallery3d/ext/MovieUtils.java
index 16b7b6375..2846ab584 100755..100644
--- a/src/com/qcom/gallery3d/ext/MovieUtils.java
+++ b/src/org/codeaurora/gallery3d/ext/MovieUtils.java
@@ -1,6 +1,7 @@
-package com.qcom.gallery3d.ext;
+package org.codeaurora.gallery3d.ext;
import android.net.Uri;
+import android.util.Log;
import java.util.Locale;
@@ -10,10 +11,13 @@ import java.util.Locale;
public class MovieUtils {
private static final String TAG = "MovieUtils";
private static final boolean LOG = true;
-
- private MovieUtils() {}
+
+ private MovieUtils() {
+ }
+
/**
- * Whether current video(Uri) is RTSP streaming or not.
+ * Whether current video(Uri) is RTSP streaming or not.
+ *
* @param uri
* @param mimeType
* @return
@@ -24,14 +28,16 @@ public class MovieUtils {
if ("rtsp".equalsIgnoreCase(uri.getScheme())) {
rtsp = true;
}
- }
+ }
if (LOG) {
- QcomLog.v(TAG, "isRtspStreaming(" + uri + ", " + mimeType + ") return " + rtsp);
+ Log.v(TAG, "isRtspStreaming(" + uri + ", " + mimeType + ") return " + rtsp);
}
return rtsp;
}
+
/**
* Whether current video(Uri) is HTTP streaming or not.
+ *
* @param uri
* @param mimeType
* @return
@@ -46,12 +52,14 @@ public class MovieUtils {
}
}
if (LOG) {
- QcomLog.v(TAG, "isHttpStreaming(" + uri + ", " + mimeType + ") return " + http);
+ Log.v(TAG, "isHttpStreaming(" + uri + ", " + mimeType + ") return " + http);
}
return http;
}
+
/**
* Whether current video(Uri) is live streaming or not.
+ *
* @param uri
* @param mimeType
* @return
@@ -66,13 +74,14 @@ public class MovieUtils {
}
}
if (LOG) {
- QcomLog.v(TAG, "isSdpStreaming(" + uri + ", " + mimeType + ") return " + sdp);
+ Log.v(TAG, "isSdpStreaming(" + uri + ", " + mimeType + ") return " + sdp);
}
return sdp;
}
-
+
/**
* Whether current video(Uri) is local file or not.
+ *
* @param uri
* @param mimeType
* @return
@@ -82,7 +91,7 @@ public class MovieUtils {
&& !isRtspStreaming(uri, mimeType)
&& !isHttpStreaming(uri, mimeType));
if (LOG) {
- QcomLog.v(TAG, "isLocalFile(" + uri + ", " + mimeType + ") return " + local);
+ Log.v(TAG, "isLocalFile(" + uri + ", " + mimeType + ") return " + local);
}
return local;
}
diff --git a/src/org/codeaurora/gallery3d/video/ExtensionHelper.java b/src/org/codeaurora/gallery3d/video/ExtensionHelper.java
new file mode 100755
index 000000000..cef0f96d7
--- /dev/null
+++ b/src/org/codeaurora/gallery3d/video/ExtensionHelper.java
@@ -0,0 +1,27 @@
+package org.codeaurora.gallery3d.video;
+
+import android.content.Context;
+
+import com.android.gallery3d.app.MovieActivity;
+import com.android.gallery3d.R;
+
+import org.codeaurora.gallery3d.ext.ActivityHookerGroup;
+import org.codeaurora.gallery3d.ext.IActivityHooker;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ExtensionHelper {
+
+ public static IActivityHooker getHooker(final Context context) {
+
+ final ActivityHookerGroup group = new ActivityHookerGroup();
+ boolean loop = context.getResources().getBoolean(R.bool.loop);
+
+ if (loop == true) {
+ group.addHooker(new LoopVideoHooker()); // add it for common feature.
+ }
+
+ return group;
+ }
+}
diff --git a/src/com/qcom/gallery3d/video/LoopVideoHooker.java b/src/org/codeaurora/gallery3d/video/LoopVideoHooker.java
index 2b5380f5d..468e8a878 100755..100644
--- a/src/com/qcom/gallery3d/video/LoopVideoHooker.java
+++ b/src/org/codeaurora/gallery3d/video/LoopVideoHooker.java
@@ -1,49 +1,46 @@
-package com.qcom.gallery3d.video;
+package org.codeaurora.gallery3d.video;
import android.view.Menu;
import android.view.MenuItem;
import com.android.gallery3d.R;
-import com.qcom.gallery3d.ext.MovieUtils;
-import com.qcom.gallery3d.ext.QcomLog;
+import org.codeaurora.gallery3d.ext.MovieUtils;
public class LoopVideoHooker extends MovieHooker {
+
private static final String TAG = "LoopVideoHooker";
private static final boolean LOG = true;
-
private static final int MENU_LOOP = 1;
-
+
private MenuItem mMenuLoopButton;
-
+
@Override
public boolean onCreateOptionsMenu(final Menu menu) {
super.onCreateOptionsMenu(menu);
mMenuLoopButton = menu.add(0, getMenuActivityId(MENU_LOOP), 0, R.string.loop);
return true;
}
+
@Override
public boolean onPrepareOptionsMenu(final Menu menu) {
super.onPrepareOptionsMenu(menu);
updateLoop();
return true;
}
+
@Override
public boolean onOptionsItemSelected(final MenuItem item) {
super.onOptionsItemSelected(item);
- switch(getMenuOriginalId(item.getItemId())) {
- case MENU_LOOP:
- getPlayer().setLoop(!getPlayer().getLoop());
- updateLoop();
- return true;
- default:
- return false;
+ switch (getMenuOriginalId(item.getItemId())) {
+ case MENU_LOOP:
+ getPlayer().setLoop(!getPlayer().getLoop());
+ return true;
+ default:
+ return false;
}
}
-
+
private void updateLoop() {
- if (LOG) {
- QcomLog.v(TAG, "updateLoop() mLoopButton=" + mMenuLoopButton);
- }
if (mMenuLoopButton != null) {
if (MovieUtils.isLocalFile(getMovieItem().getUri(), getMovieItem().getMimeType())) {
mMenuLoopButton.setVisible(true);
@@ -60,4 +57,4 @@ public class LoopVideoHooker extends MovieHooker {
}
}
}
-} \ No newline at end of file
+}
diff --git a/src/com/qcom/gallery3d/video/MovieHooker.java b/src/org/codeaurora/gallery3d/video/MovieHooker.java
index d5cbb347c..47e4bcee8 100755..100644
--- a/src/com/qcom/gallery3d/video/MovieHooker.java
+++ b/src/org/codeaurora/gallery3d/video/MovieHooker.java
@@ -1,21 +1,23 @@
-package com.qcom.gallery3d.video;
+package org.codeaurora.gallery3d.video;
-import com.qcom.gallery3d.ext.ActivityHooker;
-import com.qcom.gallery3d.ext.IMovieItem;
-import com.qcom.gallery3d.ext.IMoviePlayer;
-import com.qcom.gallery3d.ext.QcomLog;
+import android.util.Log;
+
+import org.codeaurora.gallery3d.ext.ActivityHooker;
+import org.codeaurora.gallery3d.ext.IMovieItem;
+import org.codeaurora.gallery3d.ext.IMoviePlayer;
public class MovieHooker extends ActivityHooker {
+
private static final String TAG = "MovieHooker";
private static final boolean LOG = true;
private IMovieItem mMovieItem;
private IMoviePlayer mPlayer;
-
+
@Override
public void setParameter(final String key, final Object value) {
super.setParameter(key, value);
if (LOG) {
- QcomLog.v(TAG, "setParameter(" + key + ", " + value + ")");
+ Log.v(TAG, "setParameter(" + key + ", " + value + ")");
}
if (value instanceof IMovieItem) {
mMovieItem = (IMovieItem) value;
@@ -25,14 +27,18 @@ public class MovieHooker extends ActivityHooker {
onMoviePlayerChanged(mPlayer);
}
}
-
+
public IMovieItem getMovieItem() {
return mMovieItem;
}
+
public IMoviePlayer getPlayer() {
return mPlayer;
}
-
- public void onMovieItemChanged(final IMovieItem item){}
- public void onMoviePlayerChanged(final IMoviePlayer player){}
+
+ public void onMovieItemChanged(final IMovieItem item) {
+ }
+
+ public void onMoviePlayerChanged(final IMoviePlayer player) {
+ }
}