




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、智能終端系統及應用開發課程設計報告題目:本地視頻播放器湖南班科級:16級計算機2班技姓大名:學計學 號:湖南指導教師:湖南科技大學計算機科學與工程本地視頻播放器1 .設計內容首先,我們簡單地來分析這個 App的架構,可以知道需要3個界面。一個啟 動頁面,一個獲取播放視頻列表界面,一個播放界面。設計啟動頁面,需要顯眼地告訴用戶 App正在啟動,但是要考慮啟動頁面的 時長(建議啟動頁面兩秒后,跳到播放視頻列表頁面 ),設計獲取視頻列表界面,需要讓App獲取訪問存儲空間的權限,App訪問存儲 空間獲取了視頻信息,將視頻信息展示出來。如果 App獲取視頻信息視頻(sd卡 無視頻),提示用戶沒有視頻。止
2、匕外,App首次啟動成功后,App搜索視頻需要一 定的時間,所以要設計一個進度條提示用戶等待。設計播放界面,首先要考慮能否播放,如果點擊視頻播放進入播放界面出現 播放出錯,則要提示用戶并且自動跳轉到視頻列表界面。視頻能成功播放的話, 在播放界面需要一個可以自動隱藏的控制面板,面板里有音量控制器,返回按鈕,播放/暫停按鈕,上一個/下一個按鈕,全屏/默認視頻畫面按鈕,視頻讀條和視頻 總時長。另外,在播放畫面上方需要一個狀態欄,在狀態欄中設有電池量和系統時 問。2 .設計方法2.1. 界面設計啟動界面使用相對布局, 圖片元素相對父容器水 平居中。又在相對布局中設置了 線性布局,將進度圈和 文字放了其
3、中,并將這個布局放在圖片元素下 方。相對父容器水平居 中。視頻列表界面有兩個,圖2.1.1和圖2.1.2所示圖 2.1.2圖 2.1.1圖2.1.1是App獲取視頻時,有個進度圈會轉直到視頻以列表形式展示出來 或者視頻沒有找到會提示沒有發現視頻。整個視頻列表界面是以相對布局,然后在里面嵌套一個ListView, 一個相對于父容器水平居中的ProgressBar , 一個提示 用戶的TextView。圖2.1.2是視頻信息展示出來的樣子,整個界面也是相對布局,在里面嵌套和時長。在父容器中添加線性布局相對于視頻圖標的右邊,在線性布局中TextList控件,設置視頻的名稱TextList控件設置視頻
4、大小,添加一個 View控件設置視頻之間的間隔線。Fragment2.2. 架構設計RadloGrMjpRadioButtonVed ioPage圖 2.2.1主界面分為兩個部分,一個部分是用 Fragment來做視頻信息列表,另一部分 就是用RadioGroup容器,將單選按鈕放入其中3 .實現方法3.1. 啟動頁面延遲兩秒進入主頁面1 . new一個Handler類,實例化類對象 handler.2 .用handler調用定時器函數3 . handler.postDelayed(new Runable(),2000).4 .兩秒后,執行線程里面的函數主要代碼如下:private Handl
5、er handler = new Handler();Overrideprotected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.activity_splash);handler.postDelayed(new Runnable() Overridepublic void run() 兩秒后才執行到這里執行在主線程中startMainActivity();, 2000);private boolean isStartMain = fal
6、se;/*跳轉到主頁面,并且把當前頁面關閉掉*/private void startMainActivity() if(!isStartMain)isStartMain = true;Intent intent = new Intent(this,MainActivity.class);startActivity(intent);關閉當前頁面finish(); 3.2. 獲取本地視頻1 .從本地的sdcard得到數據2 .遍歷sdcard,后綴名3 .從內容提供者里面獲取視頻4 .如果是6.0的系統,動態獲取讀取sdcard的權限主要代碼如下:Overridepublic void run()
7、 super.run();isGrantExternalRW(Activity) context); mediaitems = new ArrayList<>();獲得內容解析者對象ContentResolver resolver = context.getContentResolver(); Uri uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; String objs = MediaStore.Video.Media.DISPLAY_NAME,/ 視頻文件在 sdcard 的名稱 MediaStore.Video.Media
8、.DURA TION,/ 視頻總時長 MediaStore.Video.Media.SIZE,/ 視頻的文件大小 MediaStore.Video.Media.DA TA,/視頻的絕對地址 MediaStore.Video.Media.ARTIST,/ 歌曲的演唱者 );Cursor cursor = resolver.query(uri, objs, null, null, null); if(cursor != null)while (cursor.moveToNext()MediaItem mediaItem = new MediaItem();mediaItems.add(mediaI
9、tem);寫在上面String name = cursor.getString(O);/視頻的名稱 mediaItem.setName(name);long duration = cursor.getLong(l);/ 視頻的時長 mediaItem.setDuration(duration);long size = cursor.getLong(2);/ 視頻的文件大小 mediaItem.setSize(size);String data = cursor.getString(3);/ 視頻的播放地址 mediaItem.setData(data);String artist = curs
10、or.getString(4);/ 藝術家 mediaItem.setArtist(artist);) cursor.close();)/Handler發消息 handler.sendEmptyMessage(IO);/*解決安卓6.0以上版本不能讀取外部存儲權限的問題 * param activity* return*/public static boolean isGrantExternalRW(Activity activity) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && activity.check
11、SelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)!=PackageManager.PERMISSION_GRANTED) activity.requestPermissions(new StringManifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE, 1);return false;return true;3.3. 視頻信息顯示布局1 .判斷是否有數據2 .有數據/無數據3 .有數據,則調用適配器類,按照適配器
12、類的設置將數據綁定在控件上顯示出來,提示文本隱藏4 .無數據,則提示文本顯示5 .有無數據,ProgressBar隱藏主要代碼如下:/* VideoPager的適配器類*/private VideoPagerAdapter videoPagerAdapter;/*裝數據集合*/private ArrayList<MediaItem> mediaItems;private Handler handler = new Handler()Overridepublic void handleMessage(Message msg) super.handleMessage(msg);if(m
13、ediaItems != null && mediaItems.size() >0)有數據設置適配器videoPagerAdapter = new VideoPagerAdapter(context,mediaItems);listview.setAdapter(videoPagerAdapter);把文本隱藏tv_nomedia.setVisibility(View.GONE);else沒有數據文本顯示tv_nomedia.setVisibility(View.VISIBLE);/ProgressBar 隱藏pb_loading.setVisibility(View.G
14、ONE);3.4. 視頻播放界面1 .設置ListView的Item的點擊事件2 .添加ListView的item事件的監聽3 .當監聽到點擊Item事件的行為,傳遞數據給系統播放器4 .添加一個播放器準備好的事件和一個監聽播放器準備好的事件5 .添加一個播放完成的事件和一個監聽播放完成的事件6 .添加一個播放器出錯的事件和一個監聽播放器出錯的事件7 .完成一系列控制面板的功能(代碼略)主要代碼如下:public View initView() View view = View.inflate(context, R.layout.video_pager,null);listview = (Li
15、stView) view.findViewById(R.id.listview);設置ListView的Item的點擊事件listview.setOnItemClickListener(new MyOnItemClickListener();return view;/Item點擊事件的監聽class MyOnItemClickListener implements AdapterView.OnItemClickListener Overridepublic void onItemClick(AdapterView<?> parent, View view, int position
16、, long id) MediaItem mediaItem = mediaItems.get(position);/3.傳遞列表數據-對象-序列化Intent intent = new Intent(context,SystemVideoPlayer.class);Bundle bundle = new Bundle();bundle.putSerializable("videolist",mediaItems);intent.putExtras(bundle);intent.putExtra("position",position);context.
17、startActivity(intent);添加一個播放器準備好的事件和一個監聽播放器準備好的事件class MyOnPreparedListener implements MediaPlayer.OnPreparedListener 當底層解碼準備好的時候Overridepublic void onPrepared(MediaPlayer mp) videoWidth = mp.getVideoWidth();videoHeight = mp.getVideoHeight();videoview.start();/ 開始播放/1.視頻的總時長,關聯總長度int duration = vide
18、oview.getDuration();seekbarVideo.setMax(duration);tvDuration.setText(utils.stringForTime(duration);hideMediaController();/默認是隱藏控制面板/2.發消息handler.sendEmptyMessage(PROGRESS);屏幕的默認播放setVideoType(DEFAULT_SCREEN);添加一個播放完成的事件和一個監聽播放完成的事件class MyOnCompletionListener implements MediaPlayer.OnCompletionListener Overridepublic void onCompletion(MediaPlay
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 云南省瀘西縣一中2025屆物理高一第二學期期末檢測試題含解析
- 水利安全生產證管理辦法
- 云南省自行監測管理辦法
- 宿州電動車充電管理辦法
- 小區新能源車輛管理辦法
- 常德市招商經費管理辦法
- 生產企業風險管理辦法
- 酒店銷售客戶管理辦法
- 江西省合同監督管理辦法
- 集團物資領用管理辦法
- 2024年安徽省合肥市北城片區七年級數學第一學期期末學業水平測試試題含解析
- 2025至2030中國銅冶煉行業發展現狀及應用需求現狀分析報告
- 農業保險培訓課件
- 茶園租賃合同(含茶葉加工銷售)
- 2025至2030全球及中國浮式液化天然氣行業產業運行態勢及投資規劃深度研究報告
- 藥品連鎖總部管理制度
- 20250617國金證券機器人行業研究垂直領域具身智能機器人的野望416mb
- 物理●湖北卷丨2024年湖北省普通高中學業水平選擇性考試物理試卷及答案
- 新人教版七年級上冊初中生物全冊課時練(課后作業設計)
- 仿制藥生物等效性試驗指導原則(日本)
- 一諾LZYN質量流量計使用說明書-2009版
評論
0/150
提交評論