成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

android多媒體,Android多媒體 pdf

如何對android多媒體數(shù)據(jù)庫進(jìn)行增刪改

Android四種存儲方式: sharedpreference,file,SQlite,contentprovider。

成都創(chuàng)新互聯(lián)主要從事成都做網(wǎng)站、成都網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)龍州,10余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220

1、SharedPreferences是一種輕型的數(shù)據(jù)存儲方式,它的本質(zhì)是基于XML文件存儲key-value鍵值對數(shù)據(jù),通常用來存儲一些簡單的配置信息。其存儲位置在/data/data/包名/shared_prefs目錄下。SharedPreferences對象本身只能獲取數(shù)據(jù)而不支持存儲和修改,存儲修改是通過Editor對象實(shí)現(xiàn)。實(shí)現(xiàn)SharedPreferences存儲的步驟如下:

一、根據(jù)Context獲取SharedPreferences對象

二、利用edit()方法獲取Editor對象。

三、通過Editor對象存儲key-value鍵值對數(shù)據(jù)。

四、通過commit()方法提交數(shù)據(jù)。

具體實(shí)現(xiàn)代碼如下:實(shí)現(xiàn)存儲,讀取,清除,刪除

效果圖:

首先創(chuàng)建:// 首先拿到sharedpreference對象

mShared =getSharedPreferences(SHARED_MAIN_XML, MODE_PRIVATE);

存儲:

private void write() {// 存入數(shù)據(jù)

savename = name.getText().toString().trim();

saveage = Integer.valueOf(age.getText().toString().trim());

Editor editor = mShared.edit();

editor.putString("name", savename);

editor.putInt("age", saveage);

// 保證操作的事務(wù)完整性

editor.commit();

}

閱讀:

private String read() {// 從數(shù)據(jù)庫里讀取數(shù)據(jù)

namecontent = mShared.getString("name", "數(shù)據(jù)庫里沒有存儲姓名");

agecontent = mShared.getInt("age", 0);

String reading = "姓名:" + namecontent + "\n年齡:" + agecontent;

return reading;

}

清除內(nèi)容:

private void clear() {//清除內(nèi)容

/** 開始清除SharedPreferences中保存的內(nèi)容 **/

Editor editor = mShared.edit();

editor.remove("name");

editor.remove("age");

editor.commit();

}

刪除文件:

private void delete() {//刪除文件

/** 刪除SharedPreferences文件 **/

Filefile = new File("/data/data/cn.csdn.activity" + "/shared_prefs/"

+ SHARED_MAIN_XML + ".xml");

if (file.exists()) {

file.delete();

Toast.makeText(this, "刪除成功", Toast.LENGTH_LONG).show();

}

}

haredPreferences對象與SQLite數(shù)據(jù)庫相比,免去了創(chuàng)建數(shù)據(jù)庫,創(chuàng)建表,寫SQL語句等諸多操作,相對而言更加方便,簡潔。但是SharedPreferences也有其自身缺陷,比如其職能存儲boolean,int,float,long和String五種簡單的數(shù)據(jù)類型,比如其無法進(jìn)行條件查詢等。所以不論SharedPreferences的數(shù)據(jù)存儲操作是如何簡單,它也只能是存儲方式的一種補(bǔ)充,而無法完全替代如SQLite數(shù)據(jù)庫這樣的其他數(shù)據(jù)存儲方式。

2、 File: 即常說的文件(I/O)存儲方法,常用存儲大數(shù)量的數(shù)據(jù),但是缺點(diǎn)是更新數(shù)據(jù)將是一件困難的事情。

下面實(shí)現(xiàn):在本地data文件下使用自己生成的文件處理數(shù)據(jù)的新建儲存 讀取 刪除

如果說不想把內(nèi)容存在SharedPreferences中的話,我們可以自己寫一個(gè)文件保存須要的數(shù)據(jù),在這里我將文件保存在系統(tǒng)中的工程路徑下。

跟上面布局一樣,刪除文件也一樣,清除內(nèi)容也查不多,下面只是簡單的寫和讀的方法:

寫:

17String

nameage="名字:"+name.getText().toString().trim()+"年齡:"+age.getText().toString();

try {

os = this.openFileOutput(SHARED_MAIN_XML, MODE_PRIVATE);

/* 把字符串轉(zhuǎn)換成字節(jié)數(shù)組,寫入文件中 */

os.write(nameage.getBytes());

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}finally {

try {

/* 關(guān)閉文件輸出流 */

os.close();

} catch (IOException e) {

e.printStackTrace();

}

}

讀:

private String read() {

String nameage="";

// 打開文件輸入流,

try {

is = this.openFileInput(SHARED_MAIN_XML);

/* 初始化字節(jié)數(shù)組 */

b = new byte[1024];

/* 從文件輸入流中讀取內(nèi)容到字節(jié)數(shù)組中,返回內(nèi)容長度 */

int length = is.read(b);

/* 把字節(jié)數(shù)組轉(zhuǎn)換成字符串 */

nameage= new String(b);

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

return nameage;

}

很簡單吧!!

3、 SQLite是一種轉(zhuǎn)為嵌入式設(shè)備設(shè)計(jì)的輕型數(shù)據(jù)庫,其只有五種數(shù)據(jù)類型,分別是:

NULL: 空值

INTEGER: 整數(shù)

REAL: 浮點(diǎn)數(shù)

TEXT: 字符串

BLOB: 大數(shù)據(jù)

它是一個(gè)輕量級的數(shù)據(jù)庫、非常小 、 移植性好、效率高、可靠

在Android系統(tǒng)中提供了android.database.sqlite包,用于進(jìn)行SQLite數(shù)據(jù)庫的增、刪、改、查工作。

創(chuàng)建與刪除數(shù)據(jù)庫

封裝一個(gè)類去繼承SQLiteOpenHelper

在構(gòu)造函數(shù)中傳入數(shù)據(jù)庫名稱與數(shù)據(jù)庫版本號,數(shù)據(jù)庫被創(chuàng)建的時(shí)候會調(diào)用onCreate(SQLiteDatabase db)

方法,數(shù)據(jù)庫版本號發(fā)生改變的時(shí)候會調(diào)用onUpgrade(SQLiteDatabase db, int oldVersion,

intnewVersion)方法,可以方便的對軟件游戲升級后做出相應(yīng)處理避免覆蓋安裝數(shù)據(jù)庫發(fā)生改變產(chǎn)生的錯(cuò)誤。調(diào)用SQLiteOpenHelper

的getReadableDatabase()方法去創(chuàng)建數(shù)據(jù)庫,如果數(shù)據(jù)庫不存在則創(chuàng)建并且返回SQLiteDatabase對象,如果數(shù)據(jù)庫存在則不創(chuàng)建只返回SQLiteDatabase對象。調(diào)用

deleteDatabase(DATABASE_NAME)方法 傳入數(shù)據(jù)庫名稱則可刪除數(shù)據(jù)庫。

第一種:詳細(xì)請看上一遍博客:android之利用SQLite數(shù)據(jù)庫實(shí)現(xiàn)登陸和注冊,

下面介紹第二種:另一種添刪改查操作

效果圖:

布局文件很簡單,在此不再給出!!

直接給創(chuàng)建數(shù)據(jù)庫和表,增刪改查的代碼:

public class UserService {

private DatabaseHelper helper;

public UserService(Context context, String name, int version) {

helper = new DatabaseHelper(context, name, version);

}

public UserService(Context context, String name) {

helper = new DatabaseHelper(context, name);

}

public void insert(UserDao user) {// 插入數(shù)據(jù)

SQLiteDatabase sdb = helper.getWritableDatabase();

ContentValues values = new ContentValues();

values.put("username", user.getUsername());

values.put("password", user.getPassword());

sdb.insert("user", "name", values);

sdb.close();

}

public void delete(int id) {// 刪除數(shù)據(jù)

SQLiteDatabase sdb = helper.getWritableDatabase();

sdb.delete("user", "id=?", new String[]{String.valueOf(id)});

sdb.close();

}

public void update(UserDao user, int id) {// 更新數(shù)據(jù)

SQLiteDatabase sdb = helper.getWritableDatabase();

ContentValues values=new ContentValues();

values.put("username", user.getUsername());

values.put("password", user.getPassword());

sdb.update("user", values, "id=?", new String[]{String.valueOf(id)});

sdb.close();

}

public Cursor select() {// 查詢所有數(shù)據(jù)

SQLiteDatabase sdb = helper.getWritableDatabase();

return sdb.query("user", new String[]{"id as _id","username","password"},

null, null, null, null, null);

}

public UserDao find(int id){//按id查詢數(shù)據(jù)

UserDao user=null;

SQLiteDatabase sdb=helper.getWritableDatabase();

Cursor cursor=sdb.query("user", new String[]{"id","username","password"},

"id=?", new String[]{String.valueOf(id)}, null, null, null);

if(cursor.moveToFirst()){

user=new UserDao();

user.setId(cursor.getInt(0));

user.setUsername(cursor.getString(1));

user.setPassword(cursor.getString(2));

}

cursor.close();

sdb.close();

return user;

}

}

插入數(shù)據(jù):通過insert(String table, StringnullColumnHack, ContentValues

values)方法插入數(shù)據(jù),其中參數(shù)含義分別為:

table: 目標(biāo)表名

nullColumnHack:

指定表中的某列列名。因?yàn)樵赟QLite中,不允許不允許插入所有列均為null的記錄,因此初始值有值為空時(shí),此列需顯式賦予null

values:ContentValues對象,類似于java中的Map。以鍵值對的方式保存數(shù)據(jù)。

Android多媒體(相機(jī),相冊,播放視頻)使用

創(chuàng)建全局變量

在onCreate方法里面設(shè)置點(diǎn)擊事件

先判斷Android版本是否低于7.0,再根據(jù)判斷結(jié)果選擇不同的方式創(chuàng)建Uri(因?yàn)榘沧?.0后直接使用本地真實(shí)路徑被認(rèn)為是不安全的)

FileProvider是contentProvider

系統(tǒng)會找出能響應(yīng)這個(gè)Intent的Activity,即相機(jī),在通過startActivityForResult得到拍攝結(jié)果

1.定義全局變量fromAlbum

2.添加點(diǎn)擊事件

3.修改onActivityResult方法

(音頻文件放在assets文件夾下)

(視頻文件放在raw文件夾下)

Android多媒體信息獲取

Android開發(fā)中,常常需要獲取本地或者網(wǎng)絡(luò)多媒體的一些基本信息。MediaMetadataRetriever類位于android.media包下,提供了用于從輸入媒體文件檢索幀和元數(shù)據(jù)的統(tǒng)一接口,可以很方便實(shí)現(xiàn)這些功能。

本例中提供了獲取本地視頻和網(wǎng)絡(luò)視頻第一幀圖片的功能,首先初始化MediaMetadataRetriever,如果是本地視頻設(shè)置數(shù)據(jù)源時(shí)通過 Uri.fromFile()轉(zhuǎn)化為Uri對象,再通過MediaMetadataRetriever的getFrameAtTime()方法默認(rèn)獲取第一幀圖片。如果是網(wǎng)絡(luò)視頻直接將url設(shè)置為數(shù)據(jù)源即可。

多媒體-iOS與Android的音頻文件互通

在實(shí)際的開發(fā)中,關(guān)于音頻的傳輸上,iOS與Android的通用性一直是一個(gè)不可回避的問題。下面記錄下比較好的解決方案。

對于這個(gè)解決方法一定要提醒一下,不是把文件的格式名稱修改為 .mp3 就OK的,一定要是 mp3點(diǎn)編碼格式,遇到過一個(gè)安卓開發(fā)人員 文件的輸出格式是 3pg

而文件的格式后綴是 .mp3,結(jié)果iOS這邊一直無法播放,而且打開把該文件在服務(wù)器上的路徑粘到瀏覽器中也是無法識別和播放的。

.amr 格式的蘋果這邊也是無法播放的。

mpeg_4 輸出格式的文件蘋果這邊也是無法播放的。

兩邊都使用 libmp3lame 進(jìn)行編碼不會出現(xiàn)問題,也有些同學(xué)反應(yīng) 安卓那邊無法把pcm 格式的音頻文件轉(zhuǎn)化為 mp3 格式的,我只想說可以使用 libmp3lame 試試,網(wǎng)上能找到資源

由于安卓那邊的錄音默認(rèn)的保存格式就是 amr,而蘋果這邊也可以把音頻文件輸出為 wav格式進(jìn)行保存,所有只要 iOS端 Wav文件 轉(zhuǎn) amr 格式給安卓使用,把安卓的amr 文件轉(zhuǎn)化為 wav格式 給自己使用即可解決iOS與Android的音頻文件互通問題。

關(guān)于iOS與Android的視頻文件互通的問題,MP4格式的即可解決。

關(guān)于wav和amr 格式互轉(zhuǎn),可以參考這個(gè)dome,喜歡請 star一下

Android 多媒體 -- 四種播放視頻的方法

布局文件

Activity

Activity

Activity

Android中SurfaceView的使用詳解

Android 5.0(Lollipop)中的SurfaceTexture,TextureView, SurfaceView和GLSurfaceView

Android TextureView簡易教程

END

分享文章:android多媒體,Android多媒體 pdf
文章地址:http://jinyejixie.com/article16/dssicdg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、網(wǎng)站排名網(wǎng)站建設(shè)、云服務(wù)器、標(biāo)簽優(yōu)化、網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
安图县| 南昌市| 阜新市| 旌德县| 克拉玛依市| 宜川县| 遂川县| 墨玉县| 阿拉善盟| 余干县| 汉源县| 高邮市| 柘荣县| 修武县| 莱州市| 鄂州市| 嵩明县| 开江县| 平阴县| 宁城县| 定边县| 桂林市| 无棣县| 东丽区| 东方市| 凌源市| 天全县| 通榆县| 兴安县| 四川省| 禄劝| 东台市| 昌宁县| 秦皇岛市| 元朗区| 仙游县| 新兴县| 施秉县| 宜丰县| 郸城县| 开封市|