一,司机信息部分
信息存放于/mnt/sdcard/driverInfo目录下,由照片文件和一个xml文件组成。
在程序中有对应的Driver.java类与该xml文件对应,并有解析的方法。
二, 广告资源解析部分
资源解析模块主要涉及两个类Ad.java和Utils.java。
Ad类是对广告类的声明,包括一条广告的内容(类中的字段)。
在内存卡中的ad文件夹(名称不能修改),包括了所有的广告文件。例如ad_name目录(该名称可随意修改),ad_name中有四个固定的文件夹:
image:存放图片文件和播放控制信息文件config.xml
music:存放音频文件
text: 存放文本文件(txt)
video:存放视频文件
Utils.java类中有将资源转换为Ad对象的方法:
初始化广告列表
public static ArrayList<Ad> initAdList(String path);
得到指定目录下的所有广告
public static File[] getAllAd(String path)
将一个广告文件转换为一个Ad对象
public static Ad parseAd(File adFile);
以下为Ad类中字段的定义
private int type; //--广告类型,0表示图片1表示视频
private File[] image; //--图片文件
private File[] music; //--音频文件
private File[] text; //--文本文件
private File[] video; //--视频文件
config.xml主要是来存放图片播放时循环的次数和循环间隔(毫秒)。
package com.inspur.android.activity;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.Toast;
import android.widget.VideoView;
import com.inspur.android.beans.Ad;
import com.inspur.android.beans.AutoImageView;
import com.inspur.android.beans.Driver;
import com.inspur.android.beans.DriverInfoView;
import com.inspur.android..beans.RollTextView;
import com.inspur.android.utils.Utils;
import com.inspur.android.workthread.TakePicThread;
import com.inspur.android.TakeVideoThread;
public class MainActivity extends Activity {
ImageView imageDriver; //--司机图片
DriverInfoView driverInfoView; // 司机信息
RollTextView rollText; //--滚动字符
VideoView videoView; //--播放视频广告
AutoImageView imageView; //--播放图片广告
int currentAd = 0; //--当前播放的广告在list中的下标
ArrayList<Ad> adList; //--广告list
private MediaPlayer mediaPlayer; //--播放音频
private int videoCurrentPosition; //视频播放进度
private int musicCurrentPosition; //音频播放进度
private static final int PORT_VIDEO = 6067; //--录像端口
public static final int PORT_PICTURE = 6069; //--拍照端口
TakePicThread takePicThread; //--拍照线程
TakeVideoThread makeVideoThread;//--录像线程
Driver driver; //--司机信息
String driverInfoPath; //--司机信息路径
Ad ad; //--临时存放一个ad对象
@Override
public 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.main);
init();
if(Utils.hasSDCard()){
if(Utils.hasAdFile()){
setUpViews(); //初始化变量
setListener(); //设置监听
startThreads(); //开启功能线程
play(); //播放广告
}else{
Toast.makeText(getApplicationContext(), "无Ad文件夹!", Toast.LENGTH_LONG).show();
}
if(Utils.hasDriverInfoFile()){
setDriverInfo(); //显示司机信息
}else{
Toast.makeText(getApplicationContext(), "无driverInfo文件夹!", Toast.LENGTH_LONG).show();
}
}else{
Toast.makeText(getApplicationContext(), "未安装内存卡!", Toast.LENGTH_LONG).show();
}
}
/*初始化各个控件*/
public void init(){
rollText = (RollTextView)findViewById(R.id.rollTextView);
videoView = (VideoView)findViewById(R.id.videoView);
imageView = (AutoImageView)findViewById(R.id.imageView);
imageDriver = (ImageView)findViewById(R.id.imageDriver);
driverInfoView = (DriverInfoView)findViewById(R.id.driverInfoViewMain);
}
/*初始化各个变量等操作*/
public void setUpViews(){
adList = Utils.initAdList(Utils.AD_PATH);
for(Ad ad: adList){
System.out.println(ad);
}
mediaPlayer = new MediaPlayer();
takePicThread = new TakePicThread(PORT_PICTURE, getApplicationContext());
makeVideoThread = new TakeVideoThread(PORT_VIDEO);
}
/*显示司机信息*/
public void setDriverInfo(){
}
/*为videoview和mediaplayer设置监听*/
public void setListener(){
videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
}
});
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
}
});
imageView.setOnCompletionListener(new AutoImageView.OnCompletionListener() {
@Override
public void OnCompletion() {
}
}
});
}
/*播放视频和图片广告*/
public void play() {
ad = adList.get(currentAd);
if (ad != null) {
switch(ad.getType()){
case 0:
palyAudio(ad);//音频类广告
break;
case 1:
playVideo(ad);// 视频类广告
break;
case 2:
playImage(ad);//图片广告
break;
}
}
}
/*播放视频*/
public void playVideo(Ad ad){
}
/*播放音频*/
public void palyAudio(Ad ad){
videoView.setVisibility(View.INVISIBLE);
imageView.setFiles(ad.getImage());
imageView.setTime(Utils.getImageConfigTime(ad.getImage()[0].getParent()+"/config.xml"));
mediaPlayer.start(); // 播放
}
/*播放图片广告*/
public void playImage(Ad ad){
}
/*开启拍照和录像线程*/
public void startThreads(){
takePicThread.start();
makeVideoThread.start();
}
@Override
protected void onStart() {
}
// }
}
super.onStart();
}
@Override
protected void onResume() {
super.onResume();
}
@Override
protected void onPause() {
// }
}
super.onPause();
}
@Override
public void onDestroy() {
super.onDestroy();
}
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
System.exit(0);
}
/*选项菜单*/
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(Menu.NONE, Menu.FIRST + 1, 1, "前置").setIcon(
android.R.drawable.ic_menu_info_details);
menu.add(Menu.NONE, Menu.FIRST + 6, 6, "后置录像").setIcon(
android.R.drawable.ic_menu_send);
return true;
}
/*按钮点击事件*/
public boolean onOptionsItemSelected(MenuItem item) {
、return false;
}