当前位置:文档之家› 安卓视频播放器完整项目

安卓视频播放器完整项目

安卓视频播放器完整项目
安卓视频播放器完整项目

安卓视频播放器

该项目是自己学习阶段研发的,如果有什么不足之处,希望还能共同探,按钮和背景图片,还需要自己找,下面上代码

欢迎动画,WelcomeActivity.Java文件

package https://www.doczj.com/doc/8017800767.html,.iotek;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.Window;

import android.view.WindowManager;

public class WelcomeActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_NO_TITLE);

this.getWindow().setFlags(https://www.doczj.com/doc/8017800767.html,youtParams.FLAG_FULLSCREEN,

https://www.doczj.com/doc/8017800767.html,youtParams.FLAG_FULLSCREEN);

setContentView(https://www.doczj.com/doc/8017800767.html,yout.welcome);

new MyWelcome().start();

}

class MyWelcome extends Thread{

@Override

public void run() {

try {

sleep(3000);

Intent intent=new Intent(WelcomeActivity.this,VideoPlayerActivity.class);

startActivity(intent);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

@Override

protected void onStop() {

finish();

super.onStop();

}

}

欢迎动画配置文件welcome.xml

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="@drawable/welcome"

android:orientation="vertical" >

三秒后进行跳转,进入界面,利用TabHost,VideoPlayerActivity代码如下

package https://www.doczj.com/doc/8017800767.html,.iotek;

import https://www.doczj.com/doc/8017800767.html,.adapter.OverwriteSimpleCursorAdapter;

import https://www.doczj.com/doc/8017800767.html,.adapter.OverwriterSimAdapter;

import android.app.TabActivity;

import android.content.Context;

import android.content.Intent;

import https://www.doczj.com/doc/8017800767.html,NotFoundException;

import android.os.Bundle;

import android.view.Window;

import android.view.WindowManager;

import android.widget.SimpleAdapter;

import android.widget.SimpleCursorAdapter;

import android.widget.TabHost;

import android.widget.TabHost.OnTabChangeListener;

import android.widget.TabHost.TabSpec;

public class VideoPlayerActivity extends TabActivity {

/** Called when the activity is first created. */

static boolean flag;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_NO_TITLE);

this.getWindow().setFlags(https://www.doczj.com/doc/8017800767.html,youtParams.FLAG_FULLSCREEN,

https://www.doczj.com/doc/8017800767.html,youtParams.FLAG_FULLSCREEN);

setContentView(https://www.doczj.com/doc/8017800767.html,yout.main);

try {

//获取ShareActivity上下文

VideoList.context = createPackageContext("https://www.doczj.com/doc/8017800767.html,.iotek", Context.CONTEXT_IGNORE_SECURITY);

VideoList.share = VideoList.context.getSharedPreferences("setupadapter", VideoList.context.MODE_WORLD_READABLE);

VideoList.editor = VideoList.share.edit();

} catch (NameNotFoundException e) {

e.printStackTrace();

}

if (VideoList.share.getString("setupadapter", "off").equals("on")) {

flag = true;

}

if (VideoList.share.getString("setupadapter", "off").equals("off")) {

flag = false;

}

VideoList.helper=new Dbhelper(this, "/mnt/sdcard/videoinfo.db", null, 1);

//设置为可读

// VideoList.db=VideoList.helper.getReadableDatabase();

TabHost tabHost = getTabHost();

//创建选项卡

TabSpec localVideo=tabHost.newTabSpec("localvideo");

TabSpec videoList=tabHost.newTabSpec("videoList");

//设置选项卡名称

localVideo.setIndicator("加载本地文件");

videoList.setIndicator("播放列表");

tabHost.setOnTabChangedListener(new OnTabChangeListener() {

@Override

public void onTabChanged(String tabId) {

// TODO Auto-generated method stub

}

});

Intent intentLocal = new Intent(getApplicationContext(),ShowList.class);

Intent intentList = new Intent(getApplicationContext(),VideoList.class);

localVideo.setContent(intentLocal);

videoList.setContent(intentList);

// 添加选项卡

tabHost.addTab(localVideo);

tabHost.addTab(videoList);

//设置监听

tabHost.setOnTabChangedListener(new OnTabChangeListener() {

@Override

public void onTabChanged(String tabId) {

// TODO Auto-generated method stub

boolean f = tabId.equals("videoList");

boolean b = tabId.equals("localvideo");

if (f) {

if (flag) {

VideoList.db=VideoList.helper.getReadableDatabase();

String sql="select * from videoinfo";

VideoList.cursor=VideoList.db.rawQuery(sql, null);

VideoList.adapter=new

OverwriteSimpleCursorAdapter(getApplicationContext(), https://www.doczj.com/doc/8017800767.html,yout.show, VideoList.cursor,

new String[]{"path","videoname"},

new int[]{R.id.picture,R.id.videoname});

VideoList.videoList.setAdapter(VideoList.adapter);

}if(!flag){

VideoList.db=VideoList.helper.getReadableDatabase();

String sql="select * from videoinfo";

VideoList.cursor=VideoList.db.rawQuery(sql, null);

VideoList.adapter=new SimpleCursorAdapter(getApplicationContext(), https://www.doczj.com/doc/8017800767.html,yout.show, VideoList.cursor,

new String[]{"path","videoname"},

new int[]{R.id.picture,R.id.videoname});

VideoList.videoList.setAdapter(VideoList.adapter);

}

}

if (b) {

if (flag) {

OverwriterSimAdapter adapter = new OverwriterSimAdapter(

getApplicationContext(), ShowList.listItems, https://www.doczj.com/doc/8017800767.html,yout.filelist,

new String[] { "filename", "icon", "modify" }, new int[] {

R.id.file_name, R.id.icon, R.id.file_modify });

ShowList.filesList.setAdapter(adapter);

}if(!flag){

SimpleAdapter adapter = new SimpleAdapter(

getApplicationContext(), ShowList.listItems, https://www.doczj.com/doc/8017800767.html,yout.filelist,

new String[] { "filename", "icon", "modify" }, new int[] {

R.id.file_name, R.id.icon, R.id.file_modify });

ShowList.filesList.setAdapter(adapter);

}

}

}

});

}

@Override

protected void onDestroy() {

// VideoList.db.close();

// VideoList.cursor.close();

super.onDestroy();

}

}

配置文件main.xml

android:id="@android:id/tabhost"

android:layout_width="fill_parent"

android:layout_height="fill_parent">

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:padding="5dp">

android:id="@android:id/tabs"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:background="#00000000"

/>

android:id="@android:id/tabcontent"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:padding="5dp" />

遍历内存卡ShowList代码

package https://www.doczj.com/doc/8017800767.html,.iotek;

import java.io.File;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import https://www.doczj.com/doc/8017800767.html,.adapter.OverwriterSimAdapter;

import android.app.Activity;

import android.content.Context;

import https://www.doczj.com/doc/8017800767.html,NotFoundException;

import android.os.Bundle;

import android.view.View;

import android.widget.AdapterView;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.Button;

import android.widget.LinearLayout;

import android.widget.ListView;

import android.widget.SimpleAdapter;

import android.widget.T extView;

import android.widget.Toast;

public class ShowList extends Activity {

private TextView filepath;

static ListView filesList;

private Button backButton;

LinearLayout localBack;

// 记录当前的父文件夹

File floderParent;

int i ;

// 记录当前路径下的所有文件夹的文件数组

File[] dirFiles;

static List> listItems ;

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(https://www.doczj.com/doc/8017800767.html,yout.showlist);

localBack = (LinearLayout)findViewById(R.id.localback);

localBack.setBackgroundResource(R.drawable.bleach3);

VideoList.helper=new Dbhelper(this, "/mnt/sdcard/videoinfo.db", null, 1);

//设置为可读

// VideoList.db=VideoList.helper.getReadableDatabase();

filesList = (ListView) this.findViewById(R.id.filesList);

filepath = (TextView) this.findViewById(R.id.filepath);

backButton = (Button) this.findViewById(R.id.backButton);

VideoList.helper=new Dbhelper(this, "/mnt/sdcard/videoinfo.db", null, 1);

// VideoList.db=VideoList.helper.getReadableDatabase();

try {

//获取ShareActivity上下文

VideoList.context = createPackageContext("https://www.doczj.com/doc/8017800767.html,.iotek", Context.CONTEXT_IGNORE_SECURITY);

VideoList.share = VideoList.context.getSharedPreferences("setupadapter", VideoList.context.MODE_WORLD_READABLE);

VideoList.editor = VideoList.share.edit();

} catch (NameNotFoundException e) {

e.printStackTrace();

}

//对背景进行判断

if (VideoList.share.getString("picture", "卡通").equals("卡通")) {

localBack.setBackgroundResource(R.drawable.haizei);

}

if (VideoList.share.getString("picture", "卡通").equals("风景")) {

localBack.setBackgroundResource(R.drawable.suround2);

}

if (VideoList.share.getString("picture", "卡通").equals("明星")) {

localBack.setBackgroundResource(R.drawable.xuanya);

}

// 获取系统的SDCard的目录

File root = new File("/mnt/sdcard/");

// 如果SD卡存在的话

if (root.exists()) {

floderParent = root;

dirFiles = root.listFiles();

// 使用当前目录下的全部文件、文件夹来填充ListView

inflateListView(dirFiles);

}

filesList.setOnItemClickListener(new OnItemClickListener() {

@Override

public void onItemClick(AdapterView adapterView, View view,

int position, long id) {

// 如果用户单击了文件,直接返回,不做任何处理

if (dirFiles[position].isFile()) {

i = position;

if

(dirFiles[position].getPath().endsWith(".3gp")||dirFiles[position].getPath().endsWith(".mp4")

||dirFiles[position].getPath().endsWith(".mp3")||dirFiles[position].getPath().endsWith(".rm vb")) {

/* if

(currentFiles[position].getPath().equals(VideoList.cursor.getString(1))) {

Toast.makeText(getApplicationContext(), "你妹啊,路径名相同了", 1000).show();

}else{*/

VideoList.db=VideoList.helper.getReadableDatabase();

String sqlSelect = "select * from videoinfo where path=?";

VideoList.cursor = VideoList.db.rawQuery(sqlSelect, new String[]{dirFiles[position].getPath()});

if(!VideoList.cursor.moveToNext()){

// 放入数据库

String sql="insert into videoinfo values(null,?,?)";

VideoList.db.execSQL(sql,new

String[]{dirFiles[position].getPath(),dirFiles[position].getName()});

Toast.makeText(getApplicationContext(), "文件加载成功", 1000).show();

}else{

Toast.makeText(getApplicationContext(), "路径名相同了", 1000).show();

}

// }

}

return;

// 也可自定义扩展打开这个文件等

}

// 获取用户点击的文件夹下的所有文件

File[] tem = dirFiles[position].listFiles();

if (tem == null || tem.length == 0) {

Toast.makeText(ShowList.this,

"空文件夹", Toast.LENGTH_LONG).show();

} else {

// 获取用户单击的列表项对应的文件夹,设为当前的父文件夹

floderParent = dirFiles[position];

// 保存当前的父文件夹内的全部文件和文件夹

dirFiles = tem;

// 再次更新ListView

inflateListView(dirFiles);

}

}

});

// 获取上一级目录

backButton.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

try {

if (!floderParent.getCanonicalPath().equals("/mnt/sdcard")) {

// 获取上一级目录

floderParent = floderParent.getParentFile();

// 列出当前目录下的所有文件

dirFiles = floderParent.listFiles();

// 再次更新ListView

inflateListView(dirFiles);

}

} catch (Exception e) {

// TODO: handle exception

}

}

});

}

/**

* 根据文件夹填充ListView

*

* @param files

*/

private void inflateListView(File[] files) {

listItems = new ArrayList>();

for (int i = 0; i < files.length; i++) {

Map listItem = new HashMap();

if (files[i].isDirectory()) {

// 如果是文件夹就显示的图片为文件夹的图片

listItem.put("icon", R.drawable.dir);

}

if(files[i].isFile()){

//判断是否是视频

if(files[i].getPath().endsWith(".3gp")||files[i].getPath().endsWith(".mp4")||files[i].getPath(). endsWith(".mp3")){

if(files[i].getPath().endsWith(".3gp")||files[i].getPath().endsWith(".mp4")){

if (VideoPlayerActivity.flag) {

listItem.put("icon", files[i].getAbsolutePath());

listItem.put("modify"

,size(files[i].length())+"");

}if (!VideoPlayerActivity.flag) {

listItem.put("icon", R.drawable.avi);

listItem.put("modify"

,size(files[i].length())+"");

}

}

}else if(files[i].getPath().endsWith(".mp3")){

listItem.put("icon", R.drawable.mp3);

}else{

listItem.put("icon", R.drawable.els);

}

}

// 添加一个文件名称

listItem.put("filename", files[i].getName());

listItems.add(listItem);

}

// 判断是否使用缩略图

if (VideoPlayerActivity.flag) {

OverwriterSimAdapter adapter = new OverwriterSimAdapter(

ShowList.this, listItems, https://www.doczj.com/doc/8017800767.html,yout.filelist,

new String[] { "filename", "icon", "modify" }, new int[] {

R.id.file_name, R.id.icon, R.id.file_modify });

filesList.setAdapter(adapter);

}

if(!VideoPlayerActivity.flag){

SimpleAdapter adapter = new SimpleAdapter(

ShowList.this, listItems, https://www.doczj.com/doc/8017800767.html,yout.filelist,

new String[] { "filename", "icon", "modify" }, new int[] {

R.id.file_name, R.id.icon, R.id.file_modify });

filesList.setAdapter(adapter);

}

try {

filepath.setText("当前路径为:" + floderParent.getCanonicalPath());

//tvpath.setText("文件如下:");

} catch (Exception e) {

e.printStackTrace();

}

}

public String size(long size){

long mysize;

if(size<1024*1024){

mysize = size/1024;

return mysize+"Kb";

}else{

mysize = size/(1024*1024);

return mysize+"Mb";

}

}

@Override

protected void onRestart() {

if (VideoList.share.getString("picture", "卡通").equals("卡通")) { localBack.setBackgroundResource(R.drawable.haizei);

}

if (VideoList.share.getString("picture", "卡通").equals("风景")) { localBack.setBackgroundResource(R.drawable.suround2);

}

if (VideoList.share.getString("picture", "卡通").equals("明星")) { localBack.setBackgroundResource(R.drawable.xuanya);

}

super.onRestart();

}

@Override

protected void onDestroy() {

// VideoList.db.close();

// VideoList.cursor.close();

super.onDestroy();

}

@Override

protected void onStop() {

super.onStop();

}

}

配置文件showlist.xml

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical"

android:id="@+id/localback"

>

android:id="@+id/filepath"

android:layout_gravity="center_horizontal"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:textSize="20dip"

/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

>