日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

DASH流媒体MPD文件存储

發布時間:2023/11/27 生活经验 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DASH流媒体MPD文件存储 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Android中常見的持久化數據存儲方法有三個:文件存儲、SharedPreferences存儲和數據庫存儲。文件存儲的核心思想是將數據按照streaming的形式保存到本地,這點與C++有共通點。寫一個利用文件存儲數據的簡單實例,重新定義《MPD解析模塊在Android中的實現》中提到的parseXMLWithPull(String xmlData)方法,在showResponse()后接著調用Save()方法,將解析數據保存到本地:

    private void parseXMLWithPull(String xmlData) { //MPD解析方法Represent repres = new Represent();//實例化一個Representation對象String line = "";try {XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); //獲得一個XMLPULL工廠類的實例XmlPullParser xmlPullParser = factory.newPullParser(); //獲得一個XML解析器的實例xmlPullParser.setInput(new StringReader(xmlData));int eventType = xmlPullParser.getEventType();while (eventType != XmlPullParser.END_DOCUMENT) {String nodeName = xmlPullParser.getName();switch (eventType) {// 通過判斷事件類型來選擇執行不同的代碼// 開始解析某個結點case XmlPullParser.START_TAG: {if ("Representation".equals(nodeName)) {//由<Representation開始解析repres.setId(xmlPullParser.getAttributeValue(null, "id"));repres.setWidth(xmlPullParser.getAttributeValue(null, "width"));repres.setHeight(xmlPullParser.getAttributeValue(null, "height"));}break;}// 完成解析某個結點case XmlPullParser.END_TAG: {if ("Representation".equals(nodeName)) {     //由Representation--/>結束解析Log.d("Representation", "id is " + repres.getId());//在調試窗口logcat打印出屬性值Log.d("Representation", "width is " + repres.getWidth());Log.d("Representation", "height is " + repres.getHeight());line = line +"ID: "+ repres.getId()+";  WIDTH: "+repres.getWidth()+";  HEIGHT: "+repres.getHeight()+";\n";//將已經遍歷的屬性值連接成一個字符串,并注意換行}break;}default:break;}eventType = xmlPullParser.next();}showResponse(line);//將字符串對象傳入showResponse()方法,打印在UI的TextViewSave(line);//保存數據到本地文件} catch (Exception e) {e.printStackTrace();}}

利用文件存儲方式保存數據,Save()方法可以定義為:

public void Save(String streaming){FileOutputStream out = null;BufferedWriter writer = null;try {out = openFileOutput("mpd", Context.MODE_APPEND);
//文件名定義為mpd,因為會多次調用Save()方法,不希望每次覆蓋之前內容,因此聲明為MODE_APPENDwriter = new BufferedWriter(new OutputStreamWriter(out));writer.write(streaming);}catch (IOException e){e.printStackTrace();}finally {try{if(writer != null){writer.close();}}catch (IOException e){e.printStackTrace();}}}

Run App之后點擊MainActivity頁面的send request按鈕,執行:

在Device File Explore視窗中Data/Data/應用包名/files/下面找到新創建的mpd文件:

打開mpd文件,查看存儲的解析數據:

在真機上運行App,但是通過手機的管理文件夾不能搜索到mpd文件,網上的解答是,應用的數據文件不能被用戶直接看到,只有將手機ROOT后才可以看到Data文件。

文件存儲只適用于保存一些簡單的數據和鍵值對,當需要存儲大量復雜的關系型數據時,便會用到數據庫。使用SQLite數據庫對上面的實例進行重寫。首先建立一個MPDdatabaseHelper類,繼承自SQLiteOpenHelper類,重寫父類的構造方法、onCreate()方法和onUpgrade()方法,并定義表單的創建語句構成的數據成員字符串。

package com.example.xmlparser;import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;/*** @Author Fupenzi on 2019/1/4.* @Blog https://blog.csdn.net/qq_34041083*/public class MPDdatabaseHelper extends SQLiteOpenHelper {public static final String CREATE_DATABASE = "create table MPD("+"id string primary key,"+"width string,"+"height string)";private Context context;public MPDdatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version){super(context, name, factory, version);}@Overridepublic void onCreate(SQLiteDatabase database){database.execSQL(CREATE_DATABASE);}@Overridepublic void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion){}
}

在public class MainActivity extends AppCompatActivity implements View.OnClickListener 類中聲明類MPDdatabaseHelper對象成員:

private MPDdatabaseHelper mpdHelper;

并在MainActivity活動的onCreate()方法中對mpdHelper對象進行實例化

 mpdHelper = new MPDdatabaseHelper(this, "MPD.database",null,1);

在private void parseXMLWithPull() 方法中創建數據庫并聲明數據填充對象

SQLiteDatabase database = mpdHelper.getWritableDatabase(); 
//getWritableDatabase()方法檢測并創建數據庫,返回一個數據庫對象ContentValues values = new ContentValues();//數據庫內容填充對象

在case XmlPullParser.END_TAG:……解析結果后面,對將解析結果寫入到數據庫內容對象中,并將寫好的內容insert到表單中,之后清空內容對象。

    values.put("id",repres.getId());values.put("width",repres.getWidth());values.put("height",repres.getHeight());database.insert("MPD",null,values);values.clear();

Run App,通過文件夾視窗可以看到創建的表單:

再通過Terminal進入到該目錄利用命令行窗口查看MPD.database中的內容

可以看到表單內容和之前本地文件存儲的內容一樣,說明MPD解析的內容成功保存到數據庫中。

總結

以上是生活随笔為你收集整理的DASH流媒体MPD文件存储的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人爽站w47pw | 国产精品午夜在线观看 | 理论片av| 极品人妻一区二区三区 | 成人性生交大片 | a在线免费观看 | 亚洲成人伦理 | 日本理论片午伦夜理片在线观看 | 一个人看的www日本高清视频 | 猫咪av网 | 日本黄网免费 | 国产日产欧美一区二区三区 | 亚洲高清视频免费观看 | 日韩在线一卡二卡 | 久久精品国产精品亚洲毛片 | 日本一区二区高清不卡 | 国产精品毛片久久久久久久 | 99国产热| 亚洲图片另类小说 | 精品视频久久久久久 | 五月婷婷一区二区 | 日日操夜夜操天天操 | 国产乱码精品一品二品 | 国产成人久久精品77777综合 | 黄色小说视频网站 | 男人的天堂在线播放 | 欧美极品少妇xxxxⅹ裸体艺术 | 红桃视频成人在线 | 亚洲综合色在线 | 天堂精品久久 | 免费成人深夜在线观看 | 7777在线视频 | 国产一级淫片免费 | 国产精品永久 | 天天操中文字幕 | 亚州黄色 | 奇米婷婷 | 中文字字幕一区二区三区四区五区 | 最新超碰在线 | 米奇狠狠干 | 香港三日本8a三级少妇三级99 | 91精东传媒理伦片在线观看 | 日韩精品成人在线 | 亚洲图片欧美色图 | 久久黄色影视 | 亚洲特黄特色 | 在线观看av片 | 亚洲青涩 | 九色porny自拍视频在线播放 | 日本a级片视频 | 麻豆人妻少妇精品无码专区 | 男女野外做受全过程 | 一区二区激情视频 | 91视频插插插 | 午夜插插插| 一二三四精品 | 啪啪网站大全 | 91丨九色丨黑人外教 | 有色影院| 成人午夜免费毛片 | 少妇被躁爽到高潮 | 日本在线激情 | 日韩亚洲精品视频 | 亚洲人在线视频 | 国产污视频在线看 | 欧美国产成人精品一区二区三区 | 日日骚一区 | 69xx欧美| 中国av片 | 日韩一区二区三区在线 | 天天操狠狠操夜夜操 | 精品久久久久久一区二区里番 | 成人国产精品免费观看动漫 | 日韩欧美在线观看一区 | 黑人精品xxx一区一二区 | 色婷婷综合激情 | 69av视频| 闺蜜张开腿让我爽了一夜 | 日韩在线毛片 | 捆绑少妇玩各种sm调教 | av在线免费观看一区 | 国产美女主播在线 | 第一区免费在线观看 | 国产视频久久久久久 | 中文字幕av在线播放 | 久久国产日韩 | 亚洲中文字幕无码专区 | 欧美在线视频一区二区 | 日韩乱码人妻无码系列中文字幕 | 91极品蜜桃臀 | 国内久久精品视频 | 国产专区在线播放 | 精品一区国产 | 男人的天堂日韩 | 亚洲视频一区二区 | 欧美激情电影一区二区 | 日韩精品免费在线 | 人妻一区二区三区 | 日韩h视频|