group_fighting/code/ExpressSensor.java

318 lines
9.1 KiB
Java
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package info.ericyue.es.activity;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.location.LocationManager;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.CheckBox;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
import java.io.BufferedReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import info.ericyue.es.R;
import info.ericyue.es.util.TutorialDialog;
import info.ericyue.es.zxing.client.android.CaptureActivity;
public class ExpressSensor extends Activity{
private ListView listView;
private Bundle bundle;
private TextView infoWall;
private ProgressBar progressbar;
private serviceReceiver receiver;
private LocationManager locationManager;
//private int id;
private String id;
private boolean show_tutorial;
private long exitTime = 0; //确定是短时间按下了两次返回键
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){
if((System.currentTimeMillis()-exitTime) > 2000){
Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
}
else{
Intent location = new Intent( ExpressSensor.this, LocationService.class );
Intent record = new Intent( ExpressSensor.this, TraceRecordService.class );
/* 以stopService方法关闭Intent */
stopService(location);
stopService(record);
finish();
System.exit(0);
}
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//不显示标题栏
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
progressbar=(ProgressBar) findViewById(R.id.ProgressBar);
infoWall=(TextView) findViewById(R.id.infoWall);
show_tutorial = SettingsActivity.getShowTutorial(this);
headInfo(true,"欢迎进入Express Sensor(快递版)");
listView = (ListView)findViewById(R.id.HomeListView);
bundle=this.getIntent().getExtras();
id=bundle.getString("username");
bundle.putString("id",id);
if(!isClient()){
showDialog("账户类型与该版本客户端不匹配");
}
fillItemList();
/**
* 开启系统服务 监听用户与送货员人的位置直线距离。
*/
Intent i = new Intent(this, LocationService.class );
i.setFlags( Intent.FLAG_ACTIVITY_NEW_TASK );
i.putExtras(bundle);
startService(i);
if(show_tutorial){
showTutorial();
}
/*if(SettingsActivity.getTraceRecord(this)){
Intent tr = new Intent(this, TraceRecordService.class );
tr.setFlags( Intent.FLAG_ACTIVITY_NEW_TASK );
tr.putExtras(bundle);
startService(tr);
}
else{
Toast.makeText(this, "轨迹记录服务关闭", Toast.LENGTH_LONG).show();
}*/
// }
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {}
/**
* MenuInflater 用来解析定义在menu目录下的菜单布局文件
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.home, menu);
return super.onCreateOptionsMenu(menu);
}
/**
* 按下菜单后的响应
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case R.id.about_menu_item:
About.launch(ExpressSensor.this,bundle);
break;
case R.id.about_menu_min:
Intent i= new Intent(Intent.ACTION_MAIN);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addCategory(Intent.CATEGORY_HOME);
startActivity(i);
break;
case R.id.settings_menu_item:
SettingsActivity.launch(ExpressSensor.this,bundle);
break;
}
return super.onOptionsItemSelected(item);
}
private void showDialog(String msg){
AlertDialog.Builder builder=new AlertDialog.Builder(this);
builder.setTitle("错误").setMessage(msg).setCancelable(false).setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
finish();
}
});
AlertDialog alert=builder.create();
alert.show();
}
class NetThread extends Thread
{
private PrintWriter pw=null;
private BufferedReader br=null;
private String id;
private String result;
public void run(){
try {
pw=LoginActivity.pw;
br=LoginActivity.br;
pw.println("client");
pw.println(id);
pw.flush();
result=br.readLine();
}catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void setId(String myname) {
id = myname;
}
public String getRole() {
return result;
}
}
//判断是否为客户端身份
public boolean isClient(){
return queryRole(id).equals("0");
}
//查询用户角色
public String queryRole(String id) {
NetThread sockethread = new ExpressSensor.NetThread();
sockethread.setId(id);
sockethread.start();
try {
sockethread.join();
}catch (Exception e) {
e.printStackTrace();
}
return sockethread.getRole();
}
final void showTutorial() {
boolean showTutorial = PreferenceManager.getDefaultSharedPreferences(this).getBoolean("show_tutorial", true);
if (showTutorial) {
final TutorialDialog dlg = new TutorialDialog(this);
dlg.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
CheckBox cb = (CheckBox) dlg.findViewById(R.id.show_tutorial);
if (cb != null && cb.isChecked()) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ExpressSensor.this);
prefs.edit().putBoolean("show_tutorial", false).commit();
}
}
});
dlg.show();
} else {
}
}
private void fillItemList(){
ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>();
String[] itemStr={"全局信息","快递投递","工作统计","查看轨迹","二维码识别","关于产品"};
Integer[] iconBag={R.drawable.globalinfo,R.drawable.send,R.drawable.workstatistics,R.drawable.trace,R.drawable.qrcode,R.drawable.about};
for(int i=0;i<6;i++){
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("ItemImage", iconBag[i]);//图像资源的ID
map.put("ItemTitle", itemStr[i]);
listItem.add(map);
}
SimpleAdapter listItemAdapter = new SimpleAdapter(this,listItem,//数据源
R.layout.purple_row,
//动态数组与ImageItem对应的子项
new String[] {"ItemImage","ItemTitle"},
//ImageItem的XML文件里面的一个ImageView,两个TextView ID
new int[] {R.id.leftHead,R.id.PurpleRowTextView}
);
listView.setAdapter(listItemAdapter);
listView.setOnItemClickListener(itemListener);
}
public void headInfo(boolean run,String msg){
if(!run)
progressbar.setVisibility(View.GONE);
else
progressbar.setVisibility(View.VISIBLE);
infoWall.setText(msg);
}
private OnItemClickListener itemListener = new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position,
long id) {
switch(position){
case 0:
GlobalInfo.launch(ExpressSensor.this,bundle);
break;
case 1:
ExpressDelivery.launch(ExpressSensor.this,bundle);
break;
case 2:
WorkStatistics.launch(ExpressSensor.this,bundle);
break;
case 3:
TraceRecord.launch(ExpressSensor.this,bundle);
break;
case 4:
CaptureActivity.launch(ExpressSensor.this,bundle);
break;
case 5:
About.launch(ExpressSensor.this,bundle);
break;
}
}
};
public class serviceReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
try{
/* 取并来自后台服务所Broadcast的参数 */
Bundle b = intent.getExtras();
String message = b.getString("MESSAGE");
Toast.makeText(ExpressSensor.this, message, Toast.LENGTH_LONG).show();
}catch(Exception e){
e.getStackTrace();
}
}
}
@Override
protected void onResume(){
// TODO Auto-generated method stub
try{
/* 前景程序生命周期开始 */
IntentFilter filter;
/* 自定义要过滤的广播讯息(DavidLanz) */
filter = new IntentFilter("SENT");
receiver = new serviceReceiver();
registerReceiver(receiver, filter);
}catch(Exception e){
e.getStackTrace();
}
super.onResume();
}
@Override
protected void onPause(){
// TODO Auto-generated method stub
/* 前景程序生命周期结束解除刚守系统注册的Receiver */
unregisterReceiver(receiver);
super.onPause();
}
}