使用Vitamio打造自己的Android萬能播放器(3)——本地播放(主介面、播放列表)
阿新 • • 發佈:2018-12-11
public
class FragmentFile
extends FragmentBase
implements OnItemClickListener {
private FileAdapter mAdapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v =
super.onCreateView(inflater, container, savedInstanceState);
mAdapter =
new FileAdapter(getActivity(),
null);
mListView.setAdapter(mAdapter);
mListView.setOnItemClickListener(
this);
new ScanVideoTask().execute();
return v;
}
/**
單擊啟動播放
*/
@Override
public
void onItemClick(AdapterView<?> parent, View view,
int position,
long id) {
final File f = mAdapter.getItem(position);
Intent intent =
new Intent(getActivity(), VideoViewDemo.
class);
intent.putExtra("path", f.getPath());
startActivity(intent);
}
/**
掃描SD卡
*/
private
class ScanVideoTask
extends AsyncTask<Void, File, Void> {
@Override
protected Void doInBackground(Void... params) {
eachAllMedias(Environment.getExternalStorageDirectory());
return
null;
}
@Override
protected
void onProgressUpdate(File... values) {
mAdapter.add(values[0]);
mAdapter.notifyDataSetChanged();
}
/**
遍歷所有資料夾,查找出視訊檔案
*/
public
void eachAllMedias(File f) {
if (f !=
null && f.exists() && f.isDirectory()) {
File[] files = f.listFiles();
if (files !=
null) {
for (File file : f.listFiles()) {
if (file.isDirectory()) {
eachAllMedias(file);
}
else
if (file.exists() && file.canRead() && FileUtils.isVideoOrAudio(file)) {
publishProgress(file);
}
}
}
}
}
}
private
class FileAdapter
extends ArrayAdapter<File> {
public FileAdapter(Context ctx, ArrayList<File> l) {
super(ctx, l);
}
@Override
public View getView(
int position, View convertView, ViewGroup parent) {
final File f = getItem(position);
if (convertView ==
null) {
final LayoutInflater mInflater = getActivity().getLayoutInflater();
convertView = mInflater.inflate(R.layout.fragment_file_item,
null);
}
((TextView) convertView.findViewById(R.id.title)).setText(f.getName());
return convertView;
}
}