版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android如何選擇圖片或視頻進(jìn)行循環(huán)播放
private
void
setVideoPath()
{
Intent
intent
=
new
Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");//設(shè)置類型,我這里是任意類型,任意后綴的可以這樣寫。
intent.addCategory(Intent.CATEGORY_OPENABLE);
startActivityForResult(intent,
VIDEO_PATH);
}@Override
public
void
onActivityResult(int
requestCode,
int
resultCode,
Intent
data)
{
if
(resultCode
!=
RESULT_OK)
return;
switch
(requestCode)
{
case
VIDEO_PATH:
Uri
uri
=
data.getData();
String
path
=
getPath(
uri);
showToastReal("你選中的視頻路徑:"
+
path);
SpUtils.getInstace(this).saveString("videoPath",
path);
break;
case
PIC_PATH:
Uri
picUri
=
data.getData();
String
picPath
=
getPath(picUri);
showToastReal("你選中的圖片路徑:"
+
picPath);
SpUtils.getInstace(this).saveString("picPath",
picPath);
break;
}
}public
String
getPath(Uri
uri)
{
String
path;
if
("file".equalsIgnoreCase(uri.getScheme()))
{//使用第三方應(yīng)用打開(kāi)
path
=
uri.getPath();
return
path;
}
if
(Build.VERSION.SDK_INT
>
Build.VERSION_CODES.KITKAT)
{//4.4以后
path
=
getPath(this,
uri);
}
else
{//4.4以下下系統(tǒng)調(diào)用方法
path
=
getRealPathFromURI(uri);
}
return
path;
}
@SuppressLint("NewApi")
public
String
getPath(final
Context
context,
final
Uri
uri)
{
final
boolean
isKitKat
=
Build.VERSION.SDK_INT
>=
Build.VERSION_CODES.KITKAT;
//
DocumentProvider
if
(isKitKat
&&
DocumentsContract.isDocumentUri(context,
uri))
{
//
ExternalStorageProvider
if
(isExternalStorageDocument(uri))
{
final
String
docId
=
DocumentsContract.getDocumentId(uri);
final
String[]
split
=
docId.split(":");
final
String
type
=
split[0];
if
("primary".equalsIgnoreCase(type))
{
return
Environment.getExternalStorageDirectory()
+
"/"
+
split[1];
}
}
//
DownloadsProvider
else
if
(isDownloadsDocument(uri))
{
final
String
id
=
DocumentsContract.getDocumentId(uri);
final
Uri
contentUri
=
ContentUris.withAppendedId(
Uri.parse("content://downloads/public_downloads"),
Long.valueOf(id));
return
getDataColumn(context,
contentUri,
null,
null);
}
//
MediaProvider
else
if
(isMediaDocument(uri))
{
final
String
docId
=
DocumentsContract.getDocumentId(uri);
final
String[]
split
=
docId.split(":");
final
String
type
=
split[0];
Uri
contentUri
=
null;
if
("image".equals(type))
{
contentUri
=
MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
}
else
if
("video".equals(type))
{
contentUri
=
MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
}
else
if
("audio".equals(type))
{
contentUri
=
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
}
final
String
selection
=
"_id=?";
final
String[]
selectionArgs
=
new
String[]{split[1]};
return
getDataColumn(context,
contentUri,
selection,
selectionArgs);
}
}
//
MediaStore
(and
general)
else
if
("content".equalsIgnoreCase(uri.getScheme()))
{
return
getDataColumn(context,
uri,
null,
null);
}
//
File
else
if
("file".equalsIgnoreCase(uri.getScheme()))
{
return
uri.getPath();
}
return
null;
}
/**
*
Get
the
value
of
the
data
column
for
this
Uri.
This
is
useful
for
*
MediaStore
Uris,
and
other
file-based
ContentProviders.
*
*
@param
context
The
context.
*
@param
uri
The
Uri
to
query.
*
@param
selection
(Optional)
Filter
used
in
the
query.
*
@param
selectionArgs
(Optional)
Selection
arguments
used
in
the
query.
*
@return
The
value
of
the
_data
column,
which
is
typically
a
file
path.
*/
public
String
getDataColumn(Context
context,
Uri
uri,
String
selection,
String[]
selectionArgs)
{
Cursor
cursor
=
null;
final
String
column
=
"_data";
final
String[]
projection
=
{column};
try
{
cursor
=
context.getContentResolver().query(uri,
projection,
selection,
selectionArgs,
null);
if
(cursor
!=
null
&&
cursor.moveToFirst())
{
final
int
column_index
=
cursor.getColumnIndexOrThrow(column);
return
cursor.getString(column_index);
}
}
finally
{
if
(cursor
!=
null)
cursor.close();
}
return
null;
}
/**
*
@param
uri
The
Uri
to
check.
*
@return
Whether
the
Uri
authority
is
ExternalStorageProvider.
*/
public
boolean
isExternalStorageDocument(Uri
uri)
{
return
"com.android.externalstorage.documents".equals(uri.getAuthority());
}
/**
*
@param
uri
The
Uri
to
check.
*
@return
Whether
the
Uri
authority
is
DownloadsProvider.
*/
public
boolean
isDownloadsDocument(Uri
uri)
{
return
"viders.downloads.documents".equals(uri.getAuthority());
}
/**
*
@param
uri
The
Uri
to
check.
*
@return
Whether
the
Uri
authority
is
MediaProvider.
*/
public
boolean
isMediaDocument(Uri
uri)
{
return
"viders.media.documents".equals(uri.getAuthority());
}public
class
VideoActivity
extends
BaseActivity
{
@Bind(R.id.sv_ad)
SurfaceView
vv;
@Bind(R.id.id_ig_back)
ImageView
idIgBack;
private
MediaPlayer
mPlayer;
private
String
path;
@Override
protected
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_video);
ButterKnife.bind(this);
verifyStoragePermissions(this);
init();
//
init2();
}
private
void
init2()
{
String
path
=
SpUtils.getInstace(VideoActivity.this).getString("videoPath");
Uri
uri
=
Uri.parse("file://"
+
path);
try
{
MediaPlayer
mediaPlayer
=
new
MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(getApplicationContext(),
uri);
mediaPlayer.prepare();
mediaPlayer.start();
}
catch
(IOException
e)
{
e.printStackTrace();
}
}
private
void
init()
{
idIgBack.setOnClickListener(new
View.OnClickListener()
{
@Override
public
void
onClick(View
v)
{
finish();
}
});
vv.getHolder().addCallback(new
SurfaceHolder.Callback()
{
@Override
public
void
surfaceDestroyed(SurfaceHolder
holder)
{
if
(mPlayer
!=
null)
{
mPlayer.stop();
mPlayer.release();
mPlayer
=
null;
}
}
@Override
public
void
surfaceCreated(SurfaceHolder
holder)
{
path
=
SpUtils.getInstace(VideoActivity.this).getString("videoPath");
try
{
if
(mPlayer
==
null)
{
mPlayer
=
MediaPlayer.create(VideoActivity.this,
Uri.parse("file://"
+
path));
}
if(mPlayer==null){
showToastReal("請(qǐng)?jiān)趥€(gè)人中心中選擇正確的視頻");
}
mPlayer.setDisplay(holder);//將SurfaceHolder關(guān)聯(lián)mediaplayer
mPlayer.setLooping(true);
mPlayer.start();
mPlayer.setOnErrorListener(new
MediaPlayer.OnErrorListener()
{
@Override
public
boolean
onError(MediaPlayer
mp,
int
what,
int
extra)
{
//
TODO
Auto-generated
method
stub
return
false;
}
});
}
catch
(Exception
e)
{
e.printStackTrace();
}
}
@Override
public
void
surfaceChanged(SurfaceHolder
holder,
int
format,
int
width,
int
height)
{
}
});
}
public
void
onBack(View
view)
{
finish();
}
@Override
public
void
loadNetData()
{
}
private
static
final
int
REQUEST_EXTERNAL_STORAGE
=
1;
private
static
String[]
PERMISSIONS_STORAGE
=
{
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
};
/**
*
檢查應(yīng)用程序是否允許寫入存儲(chǔ)設(shè)備
*
<p>
*
<p>
*
<p>
*
如果應(yīng)用程序不允許那么會(huì)提示用戶授予權(quán)限
*
*
@param
activity
*/
public
static
void
verifyStoragePermissions(Activity
activity)
{
//
Check
if
we
have
wr
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 算法課程設(shè)計(jì)與分析
- 《異化與糾正-民事法官會(huì)議制度研究》
- 手寫租賃車位合同范例
- 東莞肉制品配送合同范例
- 典當(dāng)行綠化植物布置協(xié)議3篇
- 壓路機(jī)質(zhì)量檢測(cè)協(xié)議3篇
- 卜蜂蓮花合同范例
- 投資返利合同范例
- 衛(wèi)生院的聘用合同范本3篇
- 二手車過(guò)戶委托代理人協(xié)議范本3篇
- 足月小樣兒護(hù)理查房課件
- 2024年生產(chǎn)主管的挑戰(zhàn)與機(jī)遇
- 20以內(nèi)進(jìn)位加法100題(精心整理6套-可打印A4)
- 揚(yáng)州育才小學(xué)2023-2024一年級(jí)上冊(cè)數(shù)學(xué)期末復(fù)習(xí)卷(一)及答案
- 澳大利亞英文版介紹
- 04某污水處理廠630kW柔性支架光伏發(fā)電項(xiàng)目建議書(shū)
- 山中初唐王勃1
- 化妝品功效評(píng)價(jià)
- 【幼兒園園本教研】幼兒表征的教師一對(duì)一傾聽(tīng)策略
- 家長(zhǎng)會(huì)課件:高三第一學(xué)期家長(zhǎng)會(huì)優(yōu)質(zhì)課件
- 山東省各地市地圖課件
評(píng)論
0/150
提交評(píng)論