`

待研究

阅读更多
import android.content.ContentResolver;
import android.content.Context;
import android.os.Build;
import android.widget.ResourceCursorAdapter;
public abstract class EmailAddressAdapter extends ResourceCursorAdapter
{
    private static EmailAddressAdapter sInstance;
    private static Context sContext;
    public static EmailAddressAdapter getInstance(Context context)
    {
        if (sInstance == null)
        {
            String className;
            sContext = context;
            /*
             * Check the version of the SDK we are running on. Choose an
             * implementation class designed for that version of the SDK.
             */
            @SuppressWarnings("deprecation")
            int sdkVersion = Integer.parseInt(Build.VERSION.SDK);       // Cupcake style
            if (sdkVersion < Build.VERSION_CODES.ECLAIR)
            {
                className = "com.archermind.uitl.EmailAddressAdapterSdk3_4";
            }
            else
            {
                className = "com.archermind.uitl.EmailAddressAdapterSdk5";
            }
            /*
             * Find the required class by name and instantiate it.
             */
            try
            {
                Class<? extends EmailAddressAdapter> clazz =
                    Class.forName(className).asSubclass(EmailAddressAdapter.class);
                sInstance = clazz.newInstance();
            }
            catch (Exception e)
            {
                throw new IllegalStateException(e);
            }
        }
        return sInstance;
    }
    public static Context getContext()
    {
        return sContext;
    }
    protected ContentResolver mContentResolver;
    public EmailAddressAdapter()
    {
        super(getContext(), R.layout.recipient_dropdown_item, null);
        mContentResolver = getContext().getContentResolver();
    }
}


package com.wt.app;

import java.util.ArrayList;
import java.util.HashMap;

import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnCreateContextMenuListener;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.AdapterView.OnItemClickListener;

public class App extends Activity {
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //绑定Layout里面的ListView
        ListView list = (ListView) findViewById(R.id.ListView01);
        
        //生成动态数组,加入数据
        ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>();
        int[] images=new int[]{android.R.drawable.ic_menu_add,android.R.drawable.ic_menu_delete,android.R.drawable.ic_menu_edit,android.R.drawable.ic_menu_view};
        for(int i=0;i<4;i++)
        {
        	HashMap<String, Object> map = new HashMap<String, Object>();
        	map.put("itemImage", images[i]);//图像资源的ID
        	map.put("itemTitle", "Title "+i);
        	map.put("itemText", "this is Text "+i);
        	listItem.add(map);
        }
        //生成适配器的Item和动态数组对应的元素
        SimpleAdapter listItemAdapter = new SimpleAdapter(this,listItem,//数据源 
            R.layout.row,//ListItem的XML实现
            //动态数组与ImageItem对应的子项        
            new String[] {"itemImage","itemTitle", "itemText"}, 
            //ImageItem的XML文件里面的一个ImageView,两个TextView ID
            new int[] {R.id.itemImage,R.id.itemTitle,R.id.itemText}
        );
       
        //添加并且显示
        list.setAdapter(listItemAdapter);
        //添加点击
        list.setOnItemClickListener(new OnItemClickListener() {

			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
					long arg3) {
				setTitle("点击第"+arg2+"个项目");
			}
		});
        
      //添加长按点击
        list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
			
			public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
				menu.setHeaderTitle("长按菜单-ContextMenu");   
				menu.add(0, 0, 0, "弹出长按菜单0");
				menu.add(0, 1, 0, "弹出长按菜单1");   
			}
		}); 
    }
	
	//长按菜单响应函数
	@Override
	public boolean onContextItemSelected(MenuItem item) {
		setTitle("点击了长按菜单里面的第"+item.getItemId()+"个项目"); 
		return super.onContextItemSelected(item);
	}
}

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
	android:id="@+id/RelativeLayout01" 
	android:layout_width="fill_parent" 
	xmlns:android="http://schemas.android.com/apk/res/android" 
	android:layout_height="wrap_content" 
	android:paddingTop="4dip" 
	android:paddingBottom="4dip" 
	android:paddingLeft="12dip"
	android:paddingRight="12dip">
<ImageView 
	android:paddingTop="12dip"
	android:layout_alignParentRight="true"
	android:layout_width="wrap_content" 
	android:layout_height="wrap_content" 
	android:id="@+id/itemImage"
	/> 
<TextView 
    android:layout_height="wrap_content" 
    android:textSize="20dip" 
    android:layout_width="fill_parent" 
    android:id="@+id/itemTitle"
    />
<TextView 
	android:layout_height="wrap_content" 
	android:layout_width="fill_parent" 
	android:layout_below="@+id/itemTitle" 
	android:id="@+id/itemText"
	/>
</RelativeLayout>

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
	<ListView android:layout_width="wrap_content"   
          android:layout_height="wrap_content"   
          android:id="@+id/ListView01"  
    />  
</LinearLayout>

/**
	 * 在第一个字符串中查找匹配字符串的个数
	 * @param str  
	 * @param regexStr
	 * @return
	 */
	public static int count(String str,String regexStr){
		int count = 0;
		Pattern pt = Pattern.compile(regexStr);
		Matcher m = pt.matcher(str);
		int start = 0;
		while(m.find()){
			count++;
		}
		return count;
	}

/**
	 * 根据正则表达式分割str字符串成为一个一个的小的单元!
         * (实际使用:在一个类似语法分析的模块中发挥重要作用)
	 * 例如:3+5*4  根据正则表达式+-\*  分割成数组  3,+,5,*,4  
	 * @param str
	 * @param regexStr
	 * @return
	 */
	public static List splitByStr(String str,String regexStr){
		List temp = new ArrayList();
		Pattern pt = Pattern.compile(regexStr);
		Matcher m = pt.matcher(str);
		int start = 0;
		while(m.find()){
			//去掉下面的字符串中为空串的情况!
			if(m.start()!=start)
				temp.add(str.substring(start, m.start()));
			temp.add(str.substring(m.start(),m.end()));
			start = m.end();
		}
		temp.add(str.substring(start));
		return temp;
	}

      /**
	 * 检查是否含有指定的正则表达式匹配的子串.
	 * @param str 目标字符串
	 * @param regex 正则表达式,如果正则表达式含有"^......$"就是查找整个字符串对象是否符合正则表达式.
	 * @return
	 */
	public static boolean checkInclude(String str,String regex){
		 Pattern pattern = Pattern.compile(regex);
         Matcher matcher = null;
         matcher = pattern.matcher(str);
         return matcher.find();
	}
		
	/**
	 * 方法字符串中符合正则表达式的子串的集合.
	 * @param str
	 * @param regex
	 * @return
	 */
	public static List getRightSubStr(String str, String regex) {
		List ans = new ArrayList();
		Pattern pattern = Pattern.compile(regex);
		Matcher matcher = pattern.matcher(str);
		while (matcher.find()) {
			//注意要下面的goup()函数中可以含有数字,表示查找得到正则表达式中的goup匹配串.
			ans.add(matcher.group());
			System.out.println("找到匹配的字符串 \"" + matcher.group()
					+ "\" 开始于 " + matcher.start()
					+ " 结束于 " + matcher.end() + ".");
		}
		return ans;
	}

(1)使用matches方法快速建设是否表示给定的输入字符串:Pattern.matches("\\d","1")返回true
(2)split(string)使用方法:Pattern.compile(":").split("one:two:three:four:five");  返回:解析出“one two three four five”单词
再比如使用数字作为一个分割字符串的方法:(注意下面的\\d不是正则表达式,而是前面加了一个转义符号\)
Pattern.compile("\\d").split("one9two4three7four1five");也返回相同的结果。。
(3)在String类中有的几个与Pattern类似的方法:
public boolean matches(String regex):
public String[] split(String regex, int limit):
public String[] split(String regex):
public String replace(CharSequence target,CharSequence replacement):
(4) Matcher 类中其他一些有用的方法
索引方法
  索引方法(index methods)提供了一些正好在输入字符串中发现匹配的索引值:
  public int start():返回之前匹配的开始索引。
  public int start(int group):返回之前匹配操作中通过给定组所捕获序列的开始索引。
  public int end(): 返回最后匹配字符后的偏移量。
  public int end(int group): 返回之前匹配操作中通过给定组所捕获序列的最后字符之后的偏移量。 
研究方法
  研究方法(study methods)回顾输入的字符串,并且返回一个用于指示是否找到模式的布尔值。
  public boolean lookingAt(): 尝试从区域开头处开始,输入序列与该模式匹配。
  public boolean find(): 尝试地寻找输入序列中,匹配模式的下一个子序列。
  public boolean find(int start): 重置匹配器,然后从指定的索引处开始,尝试地寻找输入序列中,匹配模式的下一个子序列。
  public boolean matches(): 尝试将整个区域与模式进行匹配 
替换方法
  替换方法(replacement methods)用于在输入的字符串中替换文本有用处的方法。
  public Matcher appendReplacement(StringBuffer sb, String replacement):实现非结尾处的增加和替换操作。
  public StringBuffer appendTail(StringBuffer sb):实现结尾处的增加和替换操作。
  public String replaceAll(String replacement):使用给定的替换字符串来替换输入序列中匹配模式的每一个子序列。
  public String replaceFirst(String replacement):使用给定的替换字符串来替换输入序列中匹配模式的第一个子序列。
  public static String quoteReplacement(String s):返回指定字符串的字面值来替换字符串。这个方法会生成一个字符串,用作 Matcher 的 appendReplacement 方法中的字面值替换 s。所产生的字符串将与作为字面值序列的 s 中的字符序列匹配。斜线(\)和美元符号($)将不再有特殊意义了。 


10,29,3,4,5,0,0,12,0,2,4,1,12,7,11,1,0,8,1,3,11,11,2,0,5,6,2,7,8,4,14,3,17,9,1|4,0,5,28,2,9,2,8,8,5,4,0
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

public class HashMapTest {

	public static void getMiss(String[] split){
		TreeMap<String,String> map=new TreeMap<String,String>();
		List<String> list=new ArrayList<String>();
		String key=null;
		//将数据添加入TreeMap
		for(int i=1;i<=split.length;i++){
			if(i<10){
				key="0"+i;
			}else{
				key=""+i;
			}
			if(split[i-1].equals("0")){//如果为0,不加入map
				list.add(key);
			}else{
				map.put(key, split[i-1]);
			}
		}
		//打印list
		for(int i=0;i<list.size();i++){
			if(i!=list.size()-1){
				System.out.print(list.get(i)+",");
			}else{
				System.out.print(list.get(i)+":0");
			}
		}
		System.out.println();
		//打印map
		Iterator iterator =  map.entrySet().iterator();
		while (iterator.hasNext()) {
			Map.Entry mapentry = (Map.Entry)iterator.next();
			System.out.println(mapentry.getKey() + ":" + mapentry.getValue());
		}
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String temp="10,29,3,4,5,0,0,12,0,2,4,1,12,7,11,1,0,8,1,3,11,11,2,0,5,6,2,7,8,4,14,3,17,9,1|4,0,5,28,2,9,2,8,8,5,4,0";
		//String s="10,29,3,4,5,0,0,12,0,2,4,1,12,7,11,1,0,8,1,3,11,11,2,0,5,6,2,7,8,4,14,3,17,9,1";
		String[] split_front=temp.split("\\|")[0].split(",");
		String[] split_behide=temp.split("\\|")[1].split(",");
		getMiss(split_front);
		getMiss(split_behide);
	}

}


Dom4j+Xpath
http://newbutton.blog.163.com/blog/static/440539462007919115928634/

查手机UA
UA=<%=request.getHeader("User-Agent")%>
或试试下面这个:
var sUserAgent = window.navigator.userAgent;

jquery grid插件 Flexigrid
http://blog.csdn.net/yuanxiaogang/archive/2009/04/01/4041232.aspx

jspSmartUpload使用
http://hi.baidu.com/stream1990/blog/item/fccd60d7ae46cd2607088bef.html
使用jspSmartUpload组件应注意几点小问题
http://hi.baidu.com/%CD%F2%B4%BA%C0%F6/blog/item/e8a373519071de2c42a75b92.html
利用Jakarta commons fileupload组件实现多文件上传
http://blog.csdn.net/hbcui1984/archive/2007/05/25/1625754.aspx
对commons fileupload组件的简单封装
http://blog.csdn.net/hbcui1984/archive/2007/05/29/1629151.aspx

在Eclipse中编写JavaFX
http://blog.csdn.net/BU_BetterYou/archive/2008/06/26/2589528.aspx

HttpSessionListener和HttpSessionBindingListener
http://hi.baidu.com/lurim/blog/item/b6f3872da286c2e68a1399e2.html

基于hibernate的泛型Dao框架
http://llying.iteye.com/blog/406058

hibernate 操作 模板基类设计
http://www.iteye.com/topic/348531

Hibernate 数据库操作 模板基类 实现类GenericHibernateDao
http://www.iteye.com/topic/384199

应用Hibernate3的DetachedCriteria实现分页查询
http://www.iteye.com/topic/14657


利用java操作Excel文件
http://www.iteye.com/topic/55844

http://www.ibm.com/developerworks/cn/java/l-javaExcel/?ca=j-t10

http://sourceforge.net/project/showfiles.php?group_id=79926

http://fins.iteye.com/blog/313136

好用的复选树源码改进版
http://cxlh.iteye.com/blog/419010

getScheme()方法返回请求的计划,比如http,https或者ftp.
getServerName()方法返回被发送请求的服务器的主机名
getServerPort()方法返回被发送请求的端口号。
getContextPath()返回请求地址的根目录,以"/"开关,但不是以"/"结尾。

一个常用的获得服务器地址的连接字符串是:
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

1:先来个简单的
“用户登录一次后,一个月内不需要再次登录,请给出实现方法,用cookie实现"
cookie setMaxAge

   1. if (Request.Cookies["UserName"] != null)  
   2. {  
   3. Response.Redirect("B.aspx?UserName=" + Request.Cookies["UserName"].Value);  
   4. }  
   5. else  
   6. {  
   7. if(this.txtName.Text=="A"&&this.txtPassword.Text=="a")  
   8. {  
   9. if (CheckBox1.Checked == true)  
  10. {  
  11. Response.Cookies["UserName"].Value = System.Web.HttpUtility.UrlEncode(txtName.Text);  
  12. Response.Cookies["UserName"].Expires = DateTime.Now.AddDays(14);  
  13. }  
  14. Response.Redirect("B.aspx?UserName=" + System.Web.HttpUtility.UrlEncode(txtName.Text));  
  15.   
  16. }  
  17. else   
  18. {  
  19. Response.Write("<script>alert('输入出错!')</script>");  
  20. }  
  21. }  

2:请问如何禁止某一固定IP 访问论坛,列出您所知道的方法,可以编程实现也可以采用其他途径! request.getRemoteAddr


SELECT * FROM 表 WHERE id=2
UNION
SELECT A.* FROM(SELECT * FROM  表 WHERE id<2 ORDER BY id DESC LIMIT 0,1) AS A
UNION
SELECT B.* FROM(SELECT * FROM  表 WHERE id>2 LIMIT 0,1) AS B





truncate v.把(某物)截短,去尾

import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Calendar;
import java.util.Enumeration;
import java.util.Vector;
import javax.microedition.io.Connector;
import javax.microedition.io.file.FileConnection;

import com.wondertek.controller.MainController;

public class FileUtil {

	public static Vector getList(String path) {
		FileConnection filecon = null;
		try {
			filecon = (FileConnection) (Connector.open(path));
			if (filecon.exists()) {
				Vector listVec = new Vector();
				Enumeration en = filecon.list();
				while (en.hasMoreElements()) {
					String name = (String) en.nextElement();
					if (name.endsWith(".3gp") || name.endsWith(".3GP")) {
						listVec.addElement(name);
					}
				}
				return listVec;
			} else {
				filecon.mkdir();
				return null;
			}
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		} finally {
			try {
				if (filecon != null)
					filecon.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	public static void deleteFile(String path, String name) {
		FileConnection fc = null;
		try {
			fc = (FileConnection) (Connector.open(path + name));
			if (fc.exists()) {
				fc.delete();
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (fc != null)
					fc.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

	}

	public static String checkFileName(String fPath, String fName)
			throws IOException {
		boolean needCheck = true;
		FileConnection tmp = null;
		String newName = fName;
		int i = 0;
		while (needCheck) {
			tmp = (FileConnection) Connector.open(fPath + newName);
			if (tmp.exists()) {
				newName = fName.substring(0, fName.indexOf('.')) + "(" + i
						+ ")" + fName.substring(fName.indexOf('.'));
				i++;
			} else {
				needCheck = false;
			}
		}
		tmp.close();
		tmp = null;
		return newName;
	}

	public static void writeImage(String name, byte[] image) {
		FileConnection fc_writeLog = null;
		DataOutputStream dos = null;
		try {
			fc_writeLog = (FileConnection) Connector.open(Consts.LOCAL_DIR
					+ name);
			if (!fc_writeLog.exists()) {
				fc_writeLog.create();
			}
			dos = new DataOutputStream(fc_writeLog.openOutputStream());
			dos.write(image);
			dos.flush();
			dos.close();
			dos = null;
			fc_writeLog.close();
			fc_writeLog = null;
		} catch (IOException e) {
			e.printStackTrace();
		} catch (SecurityException e) {
			e.printStackTrace();
		} finally {
			if (dos != null) {
				try {
					dos.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
				dos = null;
			}
			if (fc_writeLog != null) {
				try {
					fc_writeLog.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
				fc_writeLog = null;
			}
		}
	}

	public static void writeLog(String str, String logAttributeName) {
		FileConnection fc_writeLog = null;
		InputStream is = null;
		int pos;
		DataOutputStream dos = null;
		try {
			fc_writeLog = (FileConnection) Connector.open(Consts.LOCAL_DIR
					+ "log.txt");
			if (!fc_writeLog.exists()) {
				fc_writeLog.create();
				pos = 0;
			} else {
				is = fc_writeLog.openInputStream();
				int size = is.available();
				byte[] posdata = new byte[size];
				pos = is.read(posdata);
			}
			Calendar cal = Calendar.getInstance();
			cal.getTime().toString();
			dos = new DataOutputStream(fc_writeLog.openOutputStream(pos));
			dos.writeUTF("#[" + cal.getTime().toString() + "|||***"
					+ logAttributeName + "] : " + str + "\r\n");
			is.close();
			is = null;
			dos.flush();
			dos.close();
			dos = null;
			fc_writeLog.close();
			fc_writeLog = null;
		} catch (IOException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (dos != null) {
				try {
					dos.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
				dos = null;
			}
			if (fc_writeLog != null) {
				try {
					fc_writeLog.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
				fc_writeLog = null;
			}
		}
	}

	public static boolean checkDirSize(long fileSize) {
		long dirOverSize = 0;
		try {
			MainController.filecon = (FileConnection) Connector
					.open(Consts.LOCAL_DIR);
			if (MainController.filecon.exists()
					&& MainController.filecon.isDirectory()) {
				dirOverSize = MainController.filecon.totalSize()
						- MainController.filecon.usedSize() - 1024 * 1024;
			}
			if (fileSize >= dirOverSize) {
				return false;
			} else {
				return true;
			}
		} catch (IOException e) {
			return false;
		} finally {
			if (MainController.filecon != null) {
				try {
					MainController.filecon.close();
				} catch (IOException e) {

				}
				MainController.filecon = null;
			}
		}
	}
}





import java.io.InputStream;
import java.util.Vector;

import javax.microedition.media.Control;
import javax.microedition.media.Manager;
import javax.microedition.media.MediaException;
import javax.microedition.media.Player;
import javax.microedition.media.PlayerListener;
import javax.microedition.media.control.FramePositioningControl;
import javax.microedition.media.control.RateControl;
import javax.microedition.media.control.VideoControl;
import javax.microedition.media.control.VolumeControl;

import com.wondertek.controller.MainController;
import com.wondertek.data.download.DownloadController;
import com.wondertek.dialog.DialogHudong;
import com.wondertek.model.Content;
import com.wondertek.util.Consts;
import com.wondertek.util.FileUtil;
import com.wondertek.util.Util;
import com.wondertek.view.VideoPage;

public class VideoPlayer extends Thread implements PlayerListener {
	private byte in_Player_State = 0;
	public static final byte PLAYER_STATE_ERROR = -1;
	public static final byte PLAYER_STATE_PREPARE = 0;
	public static final byte PLAYER_STATE_PREPARED = 1;
	public static final byte PLAYER_STATE_PLAY = 2;
	public static final byte PLAYER_STATE_PLAYING = 3;
	public static final byte PLAYER_STATE_PAUSE = 4;
	public static final byte PLAYER_STATE_PAUSED = 5;
	public static final byte PLAYER_STATE_CLOSED = 6;

	private Player player;
	private String url;
	private boolean isRunning;
	private boolean hasInit;
	private boolean isBuffer;
	private boolean isLivePause;
	private VideoControl videoC;// 图像控制器
	private VolumeControl volumeC;// 音量控制器
	private RateControl rc;// 进度控制器
	private FramePositioningControl fpc;
	private long totalTime = 0; // 总时间
	private long currentTime = 0;// 当前时间
	private long startTime = 0;
	private long endTime = 0;
	private boolean isLive = false;
	private int volumeLevel = 0;
	private VideoPage videoPage;

	public long getTotalTime() {
		return totalTime;
	}

	public long getStartTime() {
		return startTime;
	}

	public long getCurrentTime() {
		return currentTime;
	}

	public VideoPlayer(VideoPage videoPage) {
		this.videoPage = videoPage;
		init();
	}

	public void init() {
		in_Player_State = PLAYER_STATE_PREPARE;
		this.isRunning = true;
		this.hasInit = false;
		this.isBuffer = false;
		this.isLivePause = false;
		totalTime = 0;
	}

	public void setEndTime(long endTime) {
		this.endTime = endTime;
	}

	public void setStartTime(long startTime) {
		this.startTime = startTime;
	}

	public void setIslive(boolean islive) {
		this.isLive = islive;
	}

	public void setUrl(String url) {
		this.url = url;
	}

	public String getUrl() {
		return url;
	}

	public boolean isBuffer() {
		return isBuffer;
	}

	public void run() {
		while (isRunning) {
			try {
				Thread.sleep(250);
				if (!hasInit) {
					initPlayer();
					hasInit = true;
				}
				if (player != null && in_Player_State > PLAYER_STATE_PREPARED) {
					if (!isBuffer) {
						if (in_Player_State == PLAYER_STATE_PLAY) {
							player.start();
							in_Player_State = PLAYER_STATE_PLAYING;
						} else if (in_Player_State == PLAYER_STATE_PAUSE) {
							player.stop();
							in_Player_State = PLAYER_STATE_PAUSED;
						}
					}
				}
				if (isLive && videoPage.getIs_push() == Consts.IS_NOT_PUSH) {
					if (MainController.getServerTime() > endTime) {
						if (videoPage.getCurrentContents() != null
								&& videoPage.getCurrentContents().size() > 0) {
							Vector contens = videoPage.getCurrentContents();
							Content nextCon = (Content) contens.elementAt(0);
							videoPage.setCurrentContent(nextCon);
							contens.removeElementAt(0);
							videoPage.setCurrentContents(contens);
							long liveStartTime = Util.StringToTime(nextCon
									.getStartTime());
							startTime = liveStartTime;
							endTime = Util.StringToTime(nextCon.getEndTime());
						}
					}
				}
				updatePlayerStatus();
			} catch (MediaException e) {
				// FileUtil.writeLog("exception : " + player.getState() + ""
				// + e.getMessage(), "LOG");
				closePlayer();
				in_Player_State = PLAYER_STATE_ERROR;
				if (MainController.currentPage instanceof VideoPage) {
					MainController.currentPage.repaint();
				}
			} catch (InterruptedException e) {
				// FileUtil.writeLog("exception : " + e.getMessage(),
				// "InterruptedException");
				closePlayer();
				in_Player_State = PLAYER_STATE_ERROR;
				if (MainController.currentPage instanceof VideoPage) {
					MainController.currentPage.repaint();
				}
			} catch (Exception e) {
				// FileUtil.writeLog("exception : " + e.getMessage(),
				// "Exception");
				closePlayer();
				in_Player_State = PLAYER_STATE_ERROR;
				if (MainController.currentPage instanceof VideoPage) {
					MainController.currentPage.repaint();
				}
			}
		}
	}

	public synchronized void initPlayer() throws Exception {
		if (player == null) {
			if (url.startsWith("resource:")) {
				InputStream ins = getClass().getResourceAsStream(
						url.substring(9));
				String ct = Util.guessContentType(url);
				player = Manager.createPlayer(ins, ct);
			} else {
				player = Manager.createPlayer(url);
			}
		}
		if (player != null) {
			player.realize();
			player.prefetch();
			Control[] controls = player.getControls();
			for (int i = 0; i < controls.length; i++) {
				if (controls[i] instanceof VideoControl) {
					videoC = (VideoControl) controls[i];
					videoC.initDisplayMode(VideoControl.USE_DIRECT_VIDEO,
							MainController.currentPage);
					videoC.setDisplayLocation(0, Consts.HEAD_HEIGHT);
					videoC.setDisplaySize(Consts.VIDEO_WIDTH,
							Consts.VIDEO_HEIGHT);
					videoC.setVisible(false);
				}
				if (controls[i] instanceof VolumeControl) {
					volumeC = (VolumeControl) controls[i];
					volumeLevel = volumeC.getLevel();
				}
				if (controls[i] instanceof RateControl) {
					rc = (RateControl) controls[i];
				}
				if (controls[i] instanceof FramePositioningControl) {
					fpc = (FramePositioningControl) controls[i];
					// skipFrame = fpc.mapTimeToFrame(20000);
				}
			}
			// FileUtil.writeLog("CCCCCCCCCCCCCCCCCCCCCC", "LOG");
			in_Player_State = PLAYER_STATE_PREPARED;
			player.start();
			// FileUtil.writeLog("CCCCCCCCCCCCCCCCCCCCCC", "LOG");
			player.addPlayerListener(this);
			setVisable(true);
			in_Player_State = PLAYER_STATE_PLAYING;
			// FileUtil.writeLog("EEEEEEEEEEEEEEEEEEEEEE", "LOG");
		}

	}

	public byte getIn_Player_State() {
		return in_Player_State;
	}

	public void updatePlayerStatus() {// 更新时间

		if (player != null && player.getState() >= Player.STARTED) {
			if (isLive == false) {
				if (totalTime == 0L || totalTime == -1L) {
					totalTime = player.getDuration();
				}
				if (!isLivePause)
					currentTime = player.getMediaTime();
			} else {
				totalTime = endTime - startTime;
				currentTime = MainController.getServerTime() - startTime;
				if (videoPage.getIs_push() == Consts.IS_PUSH) {
					if (MainController.getServerTime() >= endTime) {
						closePlayer();
					}
				}
			}
		} else if (player != null && player.getState() == Player.CLOSED) {
			totalTime = 0;
			currentTime = 0;
			in_Player_State = PLAYER_STATE_CLOSED;
		}

		if (videoPage != null)
			videoPage.repaintProcess();
	}

	public void controlVolume(boolean volumeState) {
		if (volumeC != null) {
			if (volumeState) {
				volumeLevel += 5;
				if (volumeLevel > 100)
					volumeLevel = 100;
			} else {
				volumeLevel -= 5;
				if (volumeLevel < 0)
					volumeLevel = 0;
			}
			volumeC.setLevel(volumeLevel);
		}
	}

	public void disableVolume() {
		if (volumeC != null)
			volumeC.setLevel(0);
	}

	public void resumeVolume() {
		if (volumeC != null)
			volumeC.setLevel(volumeLevel);
	}

	public void setVisable(boolean visable) {
		if (videoC != null) {
			videoC.setVisible(visable);
		}

	}

	public void setProgress(boolean flag) {
		if (totalTime == Player.TIME_UNKNOWN
				|| currentTime == Player.TIME_UNKNOWN || fpc == null)
			return;
		if (flag) {
			fpc.seek(fpc.mapTimeToFrame(currentTime / 1000
					+ Consts.PLAY_SEEK_TIME));
		} else {
			fpc.seek(fpc.mapTimeToFrame(currentTime / 1000
					- Consts.PLAY_SEEK_TIME));
		}
	}

	public void rePlay() {
		videoPage.setPaused(false);
		hasInit = false;
		in_Player_State = PLAYER_STATE_PREPARE;
		if (MainController.currentPage instanceof VideoPage) {
			MainController.currentPage.repaint();
		}
	}

	public void play() {
		if (player != null) {
			in_Player_State = PLAYER_STATE_PLAY;
			setVisable(true);
			resumeVolume();
		} else {
			in_Player_State = PLAYER_STATE_PREPARE;
			if (MainController.currentPage instanceof VideoPage) {
				MainController.currentPage.repaint();
			}
			rePlay();
		}
	}

	public void hidePlayer() {
		isLivePause = true;
		setVisable(false);
		disableVolume();
	}

	public void resumePlayer() {
		isLivePause = false;
		setVisable(true);
		resumeVolume();
	}

	public void stopPlayer() {
		in_Player_State = PLAYER_STATE_PAUSE;
		setVisable(false);
	}

	public void closePlayer() {
		isBuffer = false;
		hasInit = true;
		if (player != null) {
			player.deallocate();
			player = null;
		}
		videoPage.setPaused(true);
	}

	public void release() {
		closePlayer();
		DownloadController.checkDownTask();
		this.isRunning = false;
	}

	public void playerUpdate(Player player, String evt, Object evtData) {
		if (evt.equals(BUFFERING_STARTED)) {// 开始缓冲
			isBuffer = true;
			if (MainController.currentPage instanceof VideoPage) {
				MainController.currentPage.repaint();
			}
		} else if (evt.equals(BUFFERING_STOPPED)) {// 缓冲结束
			isBuffer = false;
			if (MainController.currentPage instanceof VideoPage) {
				MainController.currentPage.repaint();
			}
		} else if (evt.equals(DEVICE_UNAVAILABLE)) {
			closePlayer();
			in_Player_State = PLAYER_STATE_ERROR;
			if (MainController.currentPage instanceof VideoPage) {
				MainController.currentPage.repaint();
			}
		} else if (evt.equals(DEVICE_AVAILABLE)) {
			// in_Player_State = PLAYER_STATE_ERROR;
		} else if (evt.equals(END_OF_MEDIA)) {
			closePlayer();
			in_Player_State = PLAYER_STATE_CLOSED;
			videoPage.setFinish(true);
			videoPage.repaint();
			if (!videoPage.isLocalFile()) {
				DialogHudong dialogHudong = new DialogHudong();
				MainController.currentPage.setDialogPage(dialogHudong);
				MainController.currentPage.setisDialog(true);
			}
		}
	}

	public int getPlayerProcess() {
		long playerProcess = 0L;

		if (isLive) {
			if (totalTime != 0L)
				return (int) (currentTime * 134 / totalTime);
			else
				return 0;
		}
		if (totalTime == 0L || totalTime == -1L) {
			if (player != null && player.getState() >= Player.STARTED)
				totalTime = player.getDuration();
		}
		if (player != null && totalTime != Player.TIME_UNKNOWN
				&& totalTime != 0 && currentTime != Player.TIME_UNKNOWN) {

			playerProcess = currentTime * 134 / totalTime;
		}
		return (int) playerProcess;
	}

	private String formatNumber(long num, int len, boolean leadingZeros) {
		StringBuffer ret = new StringBuffer(String.valueOf(num));
		if (leadingZeros) {
			while (ret.length() < len) {
				ret.insert(0, '0');
			}
		} else {
			while (ret.length() < len) {
				ret.append('0');
			}
		}
		return ret.toString();
	}

	private String timeDisplay(long us) {
		long ts = us / 100000;
		return formatNumber(ts / 600l, 2, true) + ":"
				+ formatNumber(((ts % 600) / 10), 2, true);
	}

	public String getMediaTimeStr() {
		try {
			if (player != null) {
				return timeDisplay(currentTime);
			}
		} catch (IllegalStateException ise) {
			// thrown when player is closed
		}
		return "00:00";
	}

	public String getEndTimeStr() {
		try {
			if (player != null) {
				return timeDisplay(totalTime);
			}
		} catch (IllegalStateException ise) {
			// thrown when player is closed
		}
		return "00:00";
	}
}


import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;

import com.tinyline.util.GZIPInputStream;

public class Ungzip {

	public static byte[] inflate(byte gzip[]) throws IOException {

		ByteArrayInputStream bis = null;
		ByteArrayOutputStream bos = null;
		GZIPInputStream gis = null;
		try {
			bis = new ByteArrayInputStream(gzip);
			bos = new ByteArrayOutputStream();
			gis = new GZIPInputStream(bis);
			byte[] buf = new byte[512];
			int len;
			while ((len = gis.read(buf)) >= 0) {
				bos.write(buf, 0, len);
			}
			return bos.toByteArray();
		} finally {
			if (bos != null) {
				bos.close();
				bos = null;
			}
			if (gis != null) {
				gis.close();
				gis = null;
			}
			if (bis != null) {
				bis.close();
				bis = null;
			}

		}
	}
}



import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;

import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;

import com.wondertek.data.rms.RmsRecord;
import com.wondertek.util.Consts;
import com.wondertek.util.FileUtil;
import com.wondertek.util.Util;

public class NetConnector {
	private String rootUrl;
	private String host;
	private String[] url;
	private int connTimes = 0;

	public NetConnector(String rootUrl, String host) {
		this.rootUrl = rootUrl;
		this.host = host;
	}

	public NetConnector() {
		url = Util.splitDownURL(Consts.serverRoot);
		if ("true".equals(Consts.isCmwap)) {
			this.rootUrl = url[0] + "://10.0.0.172" + url[2];
			this.host = url[1];
		} else {
			this.rootUrl = Consts.serverRoot;
			this.host = "";
		}
	}

	public RmsRecord getDataFromServer(String path, String modifiedTime) {
		HttpConnection httpConn = null;
		InputStream is = null;
		RmsRecord record = new RmsRecord();
		record.setName(path);
		try {
			httpConn = (HttpConnection) Connector.open(rootUrl + path);
			httpConn.setRequestMethod(HttpConnection.POST);
			if ("false".equals(Consts.isCmwap)) {
				httpConn.setRequestProperty("User-Agent", "Nokia6500s-1/2.0");
				httpConn.setRequestProperty("X-Up-Calling-Line-ID",
						"13816268129");
			}
			if (!"".equals(host))
				httpConn.setRequestProperty("X-Online-Host", host);
			if (modifiedTime != null)
				httpConn.setRequestProperty("If-Modified-Since", modifiedTime);
			if (HttpConnection.HTTP_OK == httpConn.getResponseCode()) {
				String contentType = httpConn.getHeaderField("Content-Type");
				if (contentType != null
						&& (contentType.indexOf("wml") != -1 || contentType
								.indexOf("WML") != -1)) {
					record.setFound(false);
					return record;
				}
				String version = httpConn.getHeaderField("Last-Modified");
				if (version == null)
					version = "";
				byte[] data;
				is = httpConn.openDataInputStream();
				DataInputStream dis = new DataInputStream(is);
				int length = (int) httpConn.getLength();
				if (length == -1) {
					int chunkSize = 1500;
					byte[] buffer = new byte[chunkSize];
					ByteArrayOutputStream baos = new ByteArrayOutputStream();
					int dataSizeRead = 0;// size of data read from input stream.
					while ((dataSizeRead = is.read(buffer)) != -1) {
						baos.write(buffer, 0, dataSizeRead);
					}
					data = baos.toByteArray();
					baos.close();
					record.setData(data);
					record.setServerUpdated(true);
					record.setFound(true);
					record.setVersion(version);
				} else if (length == 0) {
					record.setFound(false);
				} else {// known length
					data = new byte[length];
					dis.readFully(data);
					record.setData(data);
					record.setServerUpdated(true);
					record.setFound(true);
					record.setVersion(version);
				}
			} else if (HttpConnection.HTTP_NOT_MODIFIED == httpConn
					.getResponseCode()) {
				record.setServerUpdated(false);
				record.setFound(true);
				record.setVersion(modifiedTime);
			} else {
				record.setFound(false);
			}
		} catch (IOException t) {
			if (connTimes < 2) {
				connTimes++;
				return getDataFromServer(path, modifiedTime);
			} else {
				connTimes = 0;
				return null;
			}
		} finally {// Networking done. Clean up the network objects
			try {
				if (is != null)
					is.close();
			} catch (Throwable t) {
				System.out.println("Exception occurred while closing input "
						+ "stream.");
			}
			try {
				if (httpConn != null)
					httpConn.close();
			} catch (Throwable t) {
				System.out.println("Exception occurred " + t.toString());
			}
		}
		return record;
	}
}



import java.io.InputStream;
import java.util.Vector;

import javax.microedition.media.Control;
import javax.microedition.media.Manager;
import javax.microedition.media.MediaException;
import javax.microedition.media.Player;
import javax.microedition.media.PlayerListener;
import javax.microedition.media.control.FramePositioningControl;
import javax.microedition.media.control.RateControl;
import javax.microedition.media.control.VideoControl;
import javax.microedition.media.control.VolumeControl;

import com.wondertek.controller.MainController;
import com.wondertek.data.download.DownloadController;
import com.wondertek.dialog.DialogHudong;
import com.wondertek.model.Content;
import com.wondertek.util.Consts;
import com.wondertek.util.FileUtil;
import com.wondertek.util.Util;
import com.wondertek.view.VideoPage;

public class VideoPlayer extends Thread implements PlayerListener {
	private byte in_Player_State = 0;
	public static final byte PLAYER_STATE_ERROR = -1;
	public static final byte PLAYER_STATE_PREPARE = 0;
	public static final byte PLAYER_STATE_PREPARED = 1;
	public static final byte PLAYER_STATE_PLAY = 2;
	public static final byte PLAYER_STATE_PLAYING = 3;
	public static final byte PLAYER_STATE_PAUSE = 4;
	public static final byte PLAYER_STATE_PAUSED = 5;
	public static final byte PLAYER_STATE_CLOSED = 6;

	private Player player;
	private String url;
	private boolean isRunning;
	private boolean hasInit;
	private boolean isBuffer;
	private boolean isLivePause;
	private VideoControl videoC;// 图像控制器
	private VolumeControl volumeC;// 音量控制器
	private RateControl rc;// 进度控制器
	private FramePositioningControl fpc;
	private long totalTime = 0; // 总时间
	private long currentTime = 0;// 当前时间
	private long startTime = 0;
	private long endTime = 0;
	private boolean isLive = false;
	private int volumeLevel = 0;
	private VideoPage videoPage;

	public long getTotalTime() {
		return totalTime;
	}

	public long getStartTime() {
		return startTime;
	}

	public long getCurrentTime() {
		return currentTime;
	}

	public VideoPlayer(VideoPage videoPage) {
		this.videoPage = videoPage;
		init();
	}

	public void init() {
		in_Player_State = PLAYER_STATE_PREPARE;
		this.isRunning = true;
		this.hasInit = false;
		this.isBuffer = false;
		this.isLivePause = false;
		totalTime = 0;
	}

	public void setEndTime(long endTime) {
		this.endTime = endTime;
	}

	public void setStartTime(long startTime) {
		this.startTime = startTime;
	}

	public void setIslive(boolean islive) {
		this.isLive = islive;
	}

	public void setUrl(String url) {
		this.url = url;
	}

	public String getUrl() {
		return url;
	}

	public boolean isBuffer() {
		return isBuffer;
	}

	public void run() {
		while (isRunning) {
			try {
				Thread.sleep(250);
				if (!hasInit) {
					initPlayer();
					hasInit = true;
				}
				if (player != null && in_Player_State > PLAYER_STATE_PREPARED) {
					if (!isBuffer) {
						if (in_Player_State == PLAYER_STATE_PLAY) {
							player.start();
							in_Player_State = PLAYER_STATE_PLAYING;
						} else if (in_Player_State == PLAYER_STATE_PAUSE) {
							player.stop();
							in_Player_State = PLAYER_STATE_PAUSED;
						}
					}
				}
				if (isLive && videoPage.getIs_push() == Consts.IS_NOT_PUSH) {
					if (MainController.getServerTime() > endTime) {
						if (videoPage.getCurrentContents() != null
								&& videoPage.getCurrentContents().size() > 0) {
							Vector contens = videoPage.getCurrentContents();
							Content nextCon = (Content) contens.elementAt(0);
							videoPage.setCurrentContent(nextCon);
							contens.removeElementAt(0);
							videoPage.setCurrentContents(contens);
							long liveStartTime = Util.StringToTime(nextCon
									.getStartTime());
							startTime = liveStartTime;
							endTime = Util.StringToTime(nextCon.getEndTime());
						}
					}
				}
				updatePlayerStatus();
			} catch (MediaException e) {
				// FileUtil.writeLog("exception : " + player.getState() + ""
				// + e.getMessage(), "LOG");
				closePlayer();
				in_Player_State = PLAYER_STATE_ERROR;
				if (MainController.currentPage instanceof VideoPage) {
					MainController.currentPage.repaint();
				}
			} catch (InterruptedException e) {
				// FileUtil.writeLog("exception : " + e.getMessage(),
				// "InterruptedException");
				closePlayer();
				in_Player_State = PLAYER_STATE_ERROR;
				if (MainController.currentPage instanceof VideoPage) {
					MainController.currentPage.repaint();
				}
			} catch (Exception e) {
				// FileUtil.writeLog("exception : " + e.getMessage(),
				// "Exception");
				closePlayer();
				in_Player_State = PLAYER_STATE_ERROR;
				if (MainController.currentPage instanceof VideoPage) {
					MainController.currentPage.repaint();
				}
			}
		}
	}

	public synchronized void initPlayer() throws Exception {
		if (player == null) {
			if (url.startsWith("resource:")) {
				InputStream ins = getClass().getResourceAsStream(
						url.substring(9));
				String ct = Util.guessContentType(url);
				player = Manager.createPlayer(ins, ct);
			} else {
				player = Manager.createPlayer(url);
			}
		}
		if (player != null) {
			player.realize();
			player.prefetch();
			Control[] controls = player.getControls();
			for (int i = 0; i < controls.length; i++) {
				if (controls[i] instanceof VideoControl) {
					videoC = (VideoControl) controls[i];
					videoC.initDisplayMode(VideoControl.USE_DIRECT_VIDEO,
							MainController.currentPage);
					videoC.setDisplayLocation(0, Consts.HEAD_HEIGHT);
					videoC.setDisplaySize(Consts.VIDEO_WIDTH,
							Consts.VIDEO_HEIGHT);
					videoC.setVisible(false);
				}
				if (controls[i] instanceof VolumeControl) {
					volumeC = (VolumeControl) controls[i];
					volumeLevel = volumeC.getLevel();
				}
				if (controls[i] instanceof RateControl) {
					rc = (RateControl) controls[i];
				}
				if (controls[i] instanceof FramePositioningControl) {
					fpc = (FramePositioningControl) controls[i];
					// skipFrame = fpc.mapTimeToFrame(20000);
				}
			}
			// FileUtil.writeLog("CCCCCCCCCCCCCCCCCCCCCC", "LOG");
			in_Player_State = PLAYER_STATE_PREPARED;
			player.start();
			// FileUtil.writeLog("CCCCCCCCCCCCCCCCCCCCCC", "LOG");
			player.addPlayerListener(this);
			setVisable(true);
			in_Player_State = PLAYER_STATE_PLAYING;
			// FileUtil.writeLog("EEEEEEEEEEEEEEEEEEEEEE", "LOG");
		}

	}

	public byte getIn_Player_State() {
		return in_Player_State;
	}

	public void updatePlayerStatus() {// 更新时间

		if (player != null && player.getState() >= Player.STARTED) {
			if (isLive == false) {
				if (totalTime == 0L || totalTime == -1L) {
					totalTime = player.getDuration();
				}
				if (!isLivePause)
					currentTime = player.getMediaTime();
			} else {
				totalTime = endTime - startTime;
				currentTime = MainController.getServerTime() - startTime;
				if (videoPage.getIs_push() == Consts.IS_PUSH) {
					if (MainController.getServerTime() >= endTime) {
						closePlayer();
					}
				}
			}
		} else if (player != null && player.getState() == Player.CLOSED) {
			totalTime = 0;
			currentTime = 0;
			in_Player_State = PLAYER_STATE_CLOSED;
		}

		if (videoPage != null)
			videoPage.repaintProcess();
	}

	public void controlVolume(boolean volumeState) {
		if (volumeC != null) {
			if (volumeState) {
				volumeLevel += 5;
				if (volumeLevel > 100)
					volumeLevel = 100;
			} else {
				volumeLevel -= 5;
				if (volumeLevel < 0)
					volumeLevel = 0;
			}
			volumeC.setLevel(volumeLevel);
		}
	}

	public void disableVolume() {
		if (volumeC != null)
			volumeC.setLevel(0);
	}

	public void resumeVolume() {
		if (volumeC != null)
			volumeC.setLevel(volumeLevel);
	}

	public void setVisable(boolean visable) {
		if (videoC != null) {
			videoC.setVisible(visable);
		}

	}

	public void setProgress(boolean flag) {
		if (totalTime == Player.TIME_UNKNOWN
				|| currentTime == Player.TIME_UNKNOWN || fpc == null)
			return;
		if (flag) {
			fpc.seek(fpc.mapTimeToFrame(currentTime / 1000
					+ Consts.PLAY_SEEK_TIME));
		} else {
			fpc.seek(fpc.mapTimeToFrame(currentTime / 1000
					- Consts.PLAY_SEEK_TIME));
		}
	}

	public void rePlay() {
		videoPage.setPaused(false);
		hasInit = false;
		in_Player_State = PLAYER_STATE_PREPARE;
		if (MainController.currentPage instanceof VideoPage) {
			MainController.currentPage.repaint();
		}
	}

	public void play() {
		if (player != null) {
			in_Player_State = PLAYER_STATE_PLAY;
			setVisable(true);
			resumeVolume();
		} else {
			in_Player_State = PLAYER_STATE_PREPARE;
			if (MainController.currentPage instanceof VideoPage) {
				MainController.currentPage.repaint();
			}
			rePlay();
		}
	}

	public void hidePlayer() {
		isLivePause = true;
		setVisable(false);
		disableVolume();
	}

	public void resumePlayer() {
		isLivePause = false;
		setVisable(true);
		resumeVolume();
	}

	public void stopPlayer() {
		in_Player_State = PLAYER_STATE_PAUSE;
		setVisable(false);
	}

	public void closePlayer() {
		isBuffer = false;
		hasInit = true;
		if (player != null) {
			player.deallocate();
			player = null;
		}
		videoPage.setPaused(true);
	}

	public void release() {
		closePlayer();
		DownloadController.checkDownTask();
		this.isRunning = false;
	}

	public void playerUpdate(Player player, String evt, Object evtData) {
		if (evt.equals(BUFFERING_STARTED)) {// 开始缓冲
			isBuffer = true;
			if (MainController.currentPage instanceof VideoPage) {
				MainController.currentPage.repaint();
			}
		} else if (evt.equals(BUFFERING_STOPPED)) {// 缓冲结束
			isBuffer = false;
			if (MainController.currentPage instanceof VideoPage) {
				MainController.currentPage.repaint();
			}
		} else if (evt.equals(DEVICE_UNAVAILABLE)) {
			closePlayer();
			in_Player_State = PLAYER_STATE_ERROR;
			if (MainController.currentPage instanceof VideoPage) {
				MainController.currentPage.repaint();
			}
		} else if (evt.equals(DEVICE_AVAILABLE)) {
			// in_Player_State = PLAYER_STATE_ERROR;
		} else if (evt.equals(END_OF_MEDIA)) {
			closePlayer();
			in_Player_State = PLAYER_STATE_CLOSED;
			videoPage.setFinish(true);
			videoPage.repaint();
			if (!videoPage.isLocalFile()) {
				DialogHudong dialogHudong = new DialogHudong();
				MainController.currentPage.setDialogPage(dialogHudong);
				MainController.currentPage.setisDialog(true);
			}
		}
	}

	public int getPlayerProcess() {
		long playerProcess = 0L;

		if (isLive) {
			if (totalTime != 0L)
				return (int) (currentTime * 134 / totalTime);
			else
				return 0;
		}
		if (totalTime == 0L || totalTime == -1L) {
			if (player != null && player.getState() >= Player.STARTED)
				totalTime = player.getDuration();
		}
		if (player != null && totalTime != Player.TIME_UNKNOWN
				&& totalTime != 0 && currentTime != Player.TIME_UNKNOWN) {

			playerProcess = currentTime * 134 / totalTime;
		}
		return (int) playerProcess;
	}

	private String formatNumber(long num, int len, boolean leadingZeros) {
		StringBuffer ret = new StringBuffer(String.valueOf(num));
		if (leadingZeros) {
			while (ret.length() < len) {
				ret.insert(0, '0');
			}
		} else {
			while (ret.length() < len) {
				ret.append('0');
			}
		}
		return ret.toString();
	}

	private String timeDisplay(long us) {
		long ts = us / 100000;
		return formatNumber(ts / 600l, 2, true) + ":"
				+ formatNumber(((ts % 600) / 10), 2, true);
	}

	public String getMediaTimeStr() {
		try {
			if (player != null) {
				return timeDisplay(currentTime);
			}
		} catch (IllegalStateException ise) {
			// thrown when player is closed
		}
		return "00:00";
	}

	public String getEndTimeStr() {
		try {
			if (player != null) {
				return timeDisplay(totalTime);
			}
		} catch (IllegalStateException ise) {
			// thrown when player is closed
		}
		return "00:00";
	}
}

  • 大小: 98.6 KB
  • 大小: 31.1 KB
分享到:
评论

相关推荐

    兴城市道路左转待转区设置研究

    【兴城市道路左转待转区设置研究】探讨的是如何通过设置左转待转区来提升城市道路交通的通行能力,特别是在交通繁忙的交叉口。左转待转区是一种交通管理策略,旨在为左转车辆提供额外的等待空间,从而减少与直行车辆...

    实验流行病学与队列研究的异同.docx

    (4)研究设计:实验流行病学研究采用随机方法把研究对象分配到实验组或对照组,而队列研究则是按照研究对象过去或现在某个时期是否暴露于某个待研究因素,或其不同暴露水平而将研究对象分成不同组。 (5)研究实施...

    论文研究-基于Agent技术的企业资源计划系统研究.pdf

    论文研究-基于Agent技术的企业资源计划系统研究.pdf, 从系统工程角度分析企业管理变革与企业信息化的关系 ,剖析了企业资源计划系统面临的...最后提出了一些待研究课题 .

    队列研究——流行病学PPT课件.pptx

    在一个特定人群中选择所需的研究对象,根据目前或过去某个时期是否暴露于某个待研究的危险因素,或其不同的暴露水平而将研究对象分成不同的组,如暴露组和非暴露组,高剂量暴露组和低剂量暴露组等,随访观察一段时间...

    课题研究结题报告.doc

    结论必须指出哪些问题已经解决了,还有什么问题尚待研究。 三、撰写课题报告应注意的几个问题 1. 重点应放在介绍研究方法和研究结果方面。课题报告的价值是以方法的科学性和可靠性为条件的。 2. 理论观点的阐述要...

    流行病学第四章队列研究.ppt

    在队列研究中,暴露是指研究对象接触过某种待研究的物质、特征或行为,比如吸烟、年龄、性别等。这些暴露可能成为危险因素(增加疾病风险)或保护因素(降低疾病风险)。队列研究的目标是通过比较暴露组和非暴露组或...

    论文研究-面向事实的概念建模方法研究综述.pdf

    领域概念知识建模是构建信息系统分析...简要分析了概念建模过程,比较了不同概念建模方法,介绍了FOM的技术演化过程,从业务规则、动态建模、模型抽象机制、模型转换和工程应用等方面评述了FOM的研究现状和待研究问题。

    双语者语言切换的认知与神经机制--从行为研究到脑成像研究

    文章还提到,在双语者进行语言切换的过程中,存在一些待研究的问题。例如,目前尚不完全清楚语言切换过程中的大脑激活模式如何与认知负荷和语言能力相关联。此外,对于不同类型的双语者(如儿童双语者和成人双语者)...

    学术论文研究报告框架的构建及其写作方法.doc

    此外,还包括引言、文献综述、研究框架、主体论述、待研究问题、附录、参考文献和致谢等部分。 **应用型论文**则更注重实际应用,引言概述动机、目的和框架,主体可能涉及问题的解决方案、政策建议等,同时也要有...

    论文研究 - 预测大学生的创业意图:在非洲赞比亚应用计划行为理论

    本文通过在具有独特社会经济和文化背景的非洲发展中国家中应用计划行为理论(TPB),为企业家意图(EI)文献做出了贡献。 因此,它研究了社会规范,... 该研究还为尚待研究的赞比亚和非洲企业家精神做出了宝贵贡献。

    论文研究 - 管节墩墩整体式钢结构数值研究的有效屈曲长度

    但是,一些尚待研究的问题与在地震频繁的地区使用这种提议的结构有关。 由于缺乏对地震作用的详细研究,目前在日本很难建造这些结构。 因此,有必要详细研究有关压缩和弯矩的有限性能以及这些结构的抗震性能,以...

    论文研究 - Android安全性及其根源-安全性架构的可能改进

    技术的出现带来了无数的发展,这些发展简化了人们的操作方式。 随着对通信和信息最前沿的需求不断增长,人们已经开始使用具有较高... 总结得出的事实表明,系统安全性是一个尚待研究的话题,需要进一步研究如何改进它。

    电子政务-原位研究液滴下大气腐蚀过程的电极装置.zip

    工作电极用于模拟待研究的金属表面,其电化学反应直接反映了腐蚀状态;对电极主要用于补偿工作电极的电流变化,保持系统稳定;参比电极则提供一个已知的电位基准,用于测量工作电极的电位变化,从而评估腐蚀速率。 ...

    论文研究 - 的光谱

    在这里,我们报告了关于ROBO3基因突变的更新和有关发病机理的一些信息,但是关于突变对ROBO3表达和功能的影响,还有很多尚待研究。 因此,有必要进行进一步的详细功能分析,以阐明病理意义不确定的变体作为疾病原因...

    论文研究-自然人造复合系统的开发原理与途径------以区域大中型沼气能源工程系统开发为例.pdf

    由自然系统和人造系统所构成的自然人造复合系统是一个反馈动态复杂系统,其系统发展中存在系列问题待研究. 针对系统开发问题,提出了通过各子系统人员责任和目标的实现,...

Global site tag (gtag.js) - Google Analytics