package
com.yuanlp.mobileplayer.pager;
import
android.content.ContentResolver;
import
android.content.Context;
import
android.content.Intent;
import
android.database.Cursor;
import
android.net.Uri;
import
android.os.Handler;
import
android.os.Message;
import
android.os.SystemClock;
import
android.provider.MediaStore;
import
android.view.View;
import
android.widget.AdapterView;
import
android.widget.ListView;
import
android.widget.ProgressBar;
import
android.widget.TextView;
import
android.widget.Toast;
import
com.yuanlp.mobileplayer.R;
import
com.yuanlp.mobileplayer.activity.SystemVideoPlayer;
import
com.yuanlp.mobileplayer.adapter.MyAdapter;
import
com.yuanlp.mobileplayer.base.BasePager;
import
com.yuanlp.mobileplayer.bean.MediaItem;
import
com.yuanlp.mobileplayer.utils.LogUtil;
import
com.yuanlp.mobileplayer.utils.Utils;
import
java.util.ArrayList;
import
java.util.List;
/**
* Created by 原立鹏 on 2017/7/13.
* 本地视频的页面
*/
public
class
VideoPager
extends
BasePager {
private
ListView listview;
private
TextView nomedia;
private
ProgressBar pb_loding;
private
Utils utils;
private
List<MediaItem> mediaList;
private
MyAdapter myAdapter;
public
VideoPager(Context context) {
super
(context);
utils=
new
Utils();
}
private
Handler handler=
new
Handler(){
@Override
public
void
handleMessage(Message msg) {
super
.handleMessage(msg);
if
(mediaList!=
null
&&mediaList.size()>
0
){
myAdapter=
new
MyAdapter(context,mediaList);
listview.setAdapter(myAdapter);
nomedia.setVisibility(View.GONE);
}
else
{
Toast.makeText(context,
"没有数据"
,Toast.LENGTH_SHORT).show();
}
pb_loding.setVisibility(View.GONE);
}
};
/**
* 强制子类实现特定的效果
*
* @return
*/
@Override
public
View initView() {
LogUtil.e(
"本地视频被初始化了"
);
View view=View.inflate(context, R.layout.video_pager,
null
);
listview= (ListView) view.findViewById(R.id.listview);
nomedia= (TextView) view.findViewById(R.id.tv_nomedia);
pb_loding= (ProgressBar) view.findViewById(R.id.pb_loading);
listview.setOnItemClickListener(
new
MyOnItemClickListener());
return
view;
}
@Override
public
void
initData() {
super
.initData();
LogUtil.e(
"本地视频页面的数据被初始化了"
);
getDataFromLocal();
}
class
MyOnItemClickListener
implements
AdapterView.OnItemClickListener {
@Override
public
void
onItemClick(AdapterView<?> parent, View view,
int
position,
long
id) {
MediaItem item = mediaList.get(position);
Intent intent=
new
Intent(context,SystemVideoPlayer.
class
);
Uri uri=Uri.parse(
"file://"
+item.getData());
intent.setDataAndType(uri,
"video/mp4"
);
context.startActivity(intent);
}
}
/**
* 从本地sd卡获取数据,有2中办法
* 1、遍历sd卡,根据后缀名
* 2、从内容提供者中获取,系统有自己会去扫描所有media信息。
* 3/6.0后的系统,需要加上动态权限
*/
private
void
getDataFromLocal() {
mediaList=
new
ArrayList<>();
new
Thread(){
@Override
public
void
run() {
super
.run();
SystemClock.sleep(
2000
);
ContentResolver resolver = context.getContentResolver();
Uri uri= MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
String[] objs={
MediaStore.Video.Media.DISPLAY_NAME,
MediaStore.Video.Media.DURATION,
MediaStore.Video.Media.SIZE,
MediaStore.Video.Media.DATA,
MediaStore.Video.Media.ARTIST,
};
Cursor cursor = resolver.query(uri, objs,
null
,
null
,
null
);
if
(cursor!=
null
){
while
(cursor.moveToNext()){
MediaItem item=
new
MediaItem();
String name=cursor.getString(
0
);
item.setName(name);
long
duration=cursor.getLong(
1
);
item.setDuration(duration);
long
size=cursor.getLong(
2
);
item.setSize(size);
String data=cursor.getString(
3
);
item.setData(data);
String artist=cursor.getString(
4
);
item.setArtist(artist);
mediaList.add(item);
}
cursor.close();
}
handler.sendEmptyMessage(
0
);
}
}.start();
}
}