专业:计算机科学与技术 班级: 学号: 姓名:武易
2016年11月28日
实验一 Activity 生命周期
一、 实验目的
Android 生命周期是从程序启动到程序终止的过程。通过本次实验深入理 解 Android 系统管理生命周期的必要性,并以 Activity 为例说明 Android 系 统是如何管理程序组件的生命周期。 二、实验设备
1、硬件设备 系统类型:Win7 版本 32 位,处理器:Intel(R)Core(TM)i3-2350M CPU @2.30GHz 2.30GHz 安装内存(RAM):8.00GB
2、软件设备 Win7 操作系统、Eclipse、JDK、Android SDK、ADT 三、实验内容
1、实验要求
观察 Activity的生命周期。 2、详细设计
public class MainActivity extends ActionBarActivity { private static String TAG=\"LIFECYCLE\";
@Override
public void onCreate(Bundle savedInstanceState){ }
@Override
public void onStart(){ }
@Override
public void onRestoreInstanceState(Bundle savedInstanceState){ }
@Override
public void onResume(){
super.onRestoreInstanceState(savedInstanceState); Log.i(TAG,\"(3) onRestoreInstanceState()\"); super.onStart();
Log.i(TAG,\"(2) onStart()\");
super.onCreate(savedInstanceState); Log.i(TAG,\"(1) onCreate()\");
button.setOnClickListener(new View.OnClickListener(){ });
public void onClick(View view){ }
finish();
}
super.onResume();
Log.i(TAG,\"(4) onResume()\");
@Override
public void onSaveInstanceState(Bundle savedInstanceState){ }
@Override
public void onRestart(){ }
@Override
public void onPause(){ }
@Override
public void onStop(){
super.onStop();
Log.i(TAG,\"(8) onStop()\"); super.onPause();
Log.i(TAG,\"(7) onPause()\"); super.onRestart();
Log.i(TAG,\"(6) onRestart()\");
super.onSaveInstanceState(savedInstanceState); Log.i(TAG,\"(5) onSaveInstanceState()\");
}
@Override
public void onDestroy(){ }
super.onDestroy();
Log.i(TAG,\"(9) onDestroy()\");
/*@Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); }*/ @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present. return true; }
@Override
public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); return true;
}
return super.onOptionsItemSelected(item); } }
3、结果显示
实验二 用户界面控件
一、 实验目的
用户界面是应用程序开发的重要组成部分,决定了应用程序是否美观、易用。通过本次实验熟悉 Android 用户界面的基本开发方法,了解在 Android 界面开发过程中常见的界面控件的使用方法。 二、实验设备
1、硬件设备 系统类型:Win7 版本 32 位,处理器:Intel(R)Core(TM)i3-2350M CPU @2.30GHz 2.30GHz 安装内存(RAM):8.00GB
2、软件设备 Win7 操作系统、Eclipse、JDK、Android SDK、ADT 三、实验内容
1、实验要求
设计一个自我介绍的界面。 2、详细设计
public class MainActivity extends ActionBarActivity {
String name=\"\";
String sex=\"\"; String hobby=\"\";
String age=\"\"; @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Show();
Button.OnClickListener buttonListener=new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub name=\"\"; age=\"\";
name=editText1.getText().toString(); age=spinner.getSelectedItem().toString();
editText2.setText(\"大家好,我是\"+name+\性别:\"+sex+\爱
好:\"+hobby+\"年级:\"+age);
}
return;
};
button.setOnClickListener(buttonListener); CheckBox.OnClickListener checkboxListener=new CheckBox.OnClickListener(){
@Override
public void onClick(View v) { }
// TODO Auto-generated method stub hobby=\"\";
if(checkBox1.isChecked()) if(checkBox2.isChecked()) if(checkBox3.isChecked()) return;
};
checkBox1.setOnClickListener(checkboxListener); checkBox2.setOnClickListener(checkboxListener); checkBox3.setOnClickListener(checkboxListener); RadioButton.OnClickListener raidoButtonListener=new RadioButton.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub switch(v.getId()){
if(radio1.isChecked())
return;
if(radio2.isChecked())
return;
}
}
};
radio1.setOnClickListener(raidoButtonListener); radio2.setOnClickListener(raidoButtonListener); }
public void Show(){
List ArrayAdapter 实验三 用户界面布局 一、 实验目的 界面布局是用户界面结构的描述,定义界面中所有的元素、结构和相互关系,通过本次实验了解在 Android 界面开发过程中常见的界面布局的使用方法。 二、实验设备 1、硬件设备 系统类型:Win7 版本 32 位,处理器:Intel(R)Core(TM)i3-2350M CPU @2.30GHz 2.30GHz 安装内存(RAM):8.00GB 2、软件设备 Win7 操作系统、Eclipse、JDK、Android SDK、ADT 三、实验内容 1、实验要求 用 Tab 标签页实现多个分页之间的切换。 2、详细设计 MainActivity代码: @SuppressWarnings(\"deprecation\") public class TabDemo2Activity extends TabActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TabHost tabHost=getTabHost(); tabHost.addTab(tabHost.newTabSpec(\"TAB1\").setIndicator(\"线性布局\").setContent(new Intent().setClass(this, Tab1Activity.class))); tabHost.addTab(tabHost.newTabSpec(\"TAB2\").setIndicator(\"绝对布局\").setContent(new Intent().setClass(this, Tab2Activity.class))); tabHost.addTab(tabHost.newTabSpec(\"TAB3\").setIndicator(\"相对布局\").setContent(new Intent().setClass(this, Tab3Activity.class))); } } Table1代码: public class Tab1Activity extends Activity{ }; Table2代码: public class Tab2Activity extends Activity{ } Table3代码: public class Tab3Activity extends Activity{ } 3、结果显示 @Override public void onCreate(Bundle savedInstanceState){ } super.onCreate(savedInstanceState); @Override public void onCreate(Bundle savedInstanceState){ } super.onCreate(savedInstanceState); @Override public void onCreate(Bundle savedInstanceState){ } super.onCreate(savedInstanceState); 实验四 广播消息 一、 实验目的 Intent 是一种消息传播机制,用于组件之间数据交换和发送广播消息。通 过本次实验了解 Android 系统的组件通信原理,掌握利用 Intent 启动其他组 件的方法,以及利用 Intent 获取信息和发送广播消息的方法。 二、实验设备 1、硬件设备 系统类型:Win7 版本 32 位,处理器:Intel(R)Core(TM)i3-2350M CPU @2.30GHz 2.30GHz 安装内存(RAM):8.00GB 2、软件设备 Win7 操作系统、Eclipse、JDK、Android SDK、ADT 三、实验内容 1、实验要求 实现具有“登录”按钮的主界面,点击登录按钮后打开一个新的 Activity, 并且将主界面的用户名传递过来,点击发送广播按钮发送广播。 2、详细设计 MainActivity代码: public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final Intent intent=new Intent(this,NewActivity.class); Button.OnClickListener LoginListener=new Button.OnClickListener(){ @Override public void onClick(View i) { // TODO Auto-generated method stub switch(i.getId()){ if(LoginCheck()){ } else{ Toast.makeText(getApplicationContext(), \"用户名或密intent.putExtra(\"user\startActivity(intent); return; 码错误\ } } } finish(); return; }; Login.setOnClickListener(LoginListener); Quit.setOnClickListener(LoginListener); } public boolean LoginCheck(){ if(!Name.getText().toString().equals(\"admin\")){ return false; } else if(!Password.getText().toString().equals(\"000\")){ return false; } else return true; } } MyBroadcastReceiver代码: public class MyBroadcastReceiver extends BroadcastReceiver{ @Override public void onReceive(Context arg0, Intent arg1) { // TODO Auto-generated method stub Toast.makeText(arg0, arg1.getStringExtra(\"key\"), Toast.LENGTH_SHORT).show(); } NewActivity代码: public class NewActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { } } } super.onCreate(savedInstanceState); Intent intent=getIntent(); welcome.setText(\"欢迎你:\"+intent.getStringExtra(\"user\")); Button.OnClickListener buttonListener=new Button.OnClickListener(){ }; button.setOnClickListener(buttonListener); @Override public void onClick(View arg0) { } // TODO Auto-generated method stub intent2.putExtra(\"key\sendBroadcast(intent2); 3、结果显示 实验五 后台服务 一、 实验目的 Service 是 Android 系统的服务组件,适用于开发没有用户界面且长时间 在后台运行的功能。通过本次试验了解后台服务的基本原理,掌握本地服务的使用方法。 二、实验设备 1、硬件设备 系统类型:Win7 版本 32 位,处理器:Intel(R)Core(TM)i3-2350M CPU @2.30GHz 2.30GHz 安装内存(RAM):8.00GB 2、软件设备 Win7 操作系统、Eclipse、JDK、Android SDK、ADT 三、实验内容 1、实验要求 创建一个 Service 服务用来完成简单的数算。 2、详细设计 MainActivity代码: public class MainActivity extends ActionBarActivity { private MathService mathService; private boolean isBound=false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Begin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub if(!isBound){ final Intent serviceIntent=new Intent(MainActivity.this,MathService.class); bindService(serviceIntent,mConnection,Context.BIND_AUTO_CREATE); isBound=true; }); } } Do.setOnClickListener(new View.OnClickListener() { }); @Override public void onClick(View arg0) { } // TODO Auto-generated method stub if(mathService==null){ } int a=Integer.parseInt(One.getText().toString()); int b=Integer.parseInt(Two.getText().toString()); int s=mathService.Compare(a, b); textView.setText(\"较大的数为:\"+s); textView.setText(\"未绑定服务\"); return; Stop.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View arg0){ if(isBound){ isBound=false; } }); } unbindService(mConnection); mathService=null; Quit.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View arg0){ } }); } private ServiceConnection mConnection=new ServiceConnection(){ }; @Override public void onServiceConnected(ComponentName name,IBinder service){ } @Override public void onServiceDisconnected(ComponentName name){ } mathService=null; mathService=((MathService.LocalBinder)service).getService(); finish(); } MathService代码: public class MathService extends Service{ private final IBinder mBinder=new LocalBinder(); public class LocalBinder extends Binder{ } @Override public IBinder onBind(Intent arg0) { } @Override public boolean onUnbind(Intent intent){ } public int Compare(int a,int b){ if(a>b){ Toast.makeText(this, \"已取消服务\return false; // TODO Auto-generated method stub Toast.makeText(this, \"已启动服务\return mBinder; MathService getService(){ } return MathService.this; } } } return a; else if(b>a){ } else return 0; return b; 3、结果显示 实验六 数据库存储 一、 实验目的 数据库存储是 Android 数据存储中非常重要的内容,Android 提供一个轻 量级的嵌入式数据库 SQLite,本次试验将学习如何通过代码建立数据库,并实现添加、删除、查找和更新等基本操作。 二、实验设备 1、硬件设备 系统类型:Win7 版本 32 位,处理器:Intel(R)Core(TM)i3-2350M CPU @2.30GHz 2.30GHz 安装内存(RAM):8.00GB 2、软件设备 Win7 操作系统、Eclipse、JDK、Android SDK、ADT 三、实验内容 1、实验要求 建立一个数据库并完成增删查改操作。 2、详细设计 MainActivity代码: public class MainActivity extends ActionBarActivity { private DBAdapter dbadapter; private Context mContext; public DBAdapter getDbadapter() { } public void setDbadapter(DBAdapter dbadapter) { } @Override this.dbadapter = dbadapter; return dbadapter; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mContext = this; Button.OnClickListener QuitListener=new Button.OnClickListener(){ @Override public void onClick(View arg0) { } // TODO Auto-generated method stub finish(); }; Button.OnClickListener addListener=new Button.OnClickListener(){ @Override public void onClick(View arg0) { } // TODO Auto-generated method stub dbadapter =new DBAdapter(mContext); dbadapter.open(); People add=new People(); add.Name=name.getText().toString(); add.Sex=sex.getText().toString(); add.Place=place.getText().toString(); add.Pay=Integer.parseInt(pay.getText().toString()); dbadapter.insert(add); dbadapter.close(); }; Button.OnClickListener cleanListener=new Button.OnClickListener(){ @Override public void onClick(View arg0) { } // TODO Auto-generated method stub showdata.setText(\"\"); }; Button.OnClickListener deleteListener=new Button.OnClickListener(){ @Override public void onClick(View arg0) { } // TODO Auto-generated method stub dbadapter =new DBAdapter(mContext); dbadapter.open(); dbadapter.deleteAllData(); dbadapter.close(); }; Button.OnClickListener ShowListener=new Button.OnClickListener(){ @Override public void onClick(View arg0) { // TODO Auto-generated method stub dbadapter =new DBAdapter(mContext); dbadapter.open(); People[] shows=new People[56]; String results = \"\"; if(ID.getText().toString()==null) Toast.makeText(MainActivity.this, \"请输入ID\ Toast.LENGTH_SHORT).show(); else if(dbadapter.getAllData()!=null){ shows=dbadapter.getAllData(); dbadapter.close(); for(int i=0;i \ } showdata.setText(results.toString()); }; Button.OnClickListener ID_deleteListener=new Button.OnClickListener(){ @Override public void onClick(View arg0) { // TODO Auto-generated method stub if(ID.getText().toString().equals(\"\")) Toast.makeText(MainActivity.this, \"请输入ID\ Toast.LENGTH_SHORT).show(); else{ dbadapter =new DBAdapter(mContext); } dbadapter.open(); int id=Integer.parseInt(ID.getText().toString()); dbadapter.deleteOneData(id); dbadapter.close(); } }; Button.OnClickListener ID_checkListener=new Button.OnClickListener(){ @Override public void onClick(View arg0) { // TODO Auto-generated method stub if(ID.getText().toString().equals(\"\")) Toast.makeText(MainActivity.this, \"请输入ID\ Toast.LENGTH_SHORT).show(); else{ dbadapter =new DBAdapter(mContext); dbadapter.open(); long id=Integer.parseInt(ID.getText().toString()); People[] shows=new People[1]; if(dbadapter.getOneData(id)!=null){ shows=dbadapter.getOneData(id); dbadapter.close(); } String results = shows[0].toString(); showdata.setText(results); } } }; Button.OnClickListener ID_updateListener=new Button.OnClickListener(){ @Override public void onClick(View arg0) { // TODO Auto-generated method stub if(ID.getText().toString().equals(\"\")) Toast.makeText(MainActivity.this, \"请输入ID\ Toast.LENGTH_SHORT).show(); else{ dbadapter =new DBAdapter(mContext); dbadapter.open(); long id=Integer.parseInt(ID.getText().toString()); People people=new People(); people.Name=name.getText().toString(); people.Sex=sex.getText().toString(); people.Place=place.getText().toString(); people.Pay=Integer.parseInt(pay.getText().toString()); } dbadapter.updateOneData(id, people); dbadapter.close(); } }; add.setOnClickListener(addListener); show.setOnClickListener(ShowListener); clean.setOnClickListener(cleanListener); delete.setOnClickListener(deleteListener); Quit.setOnClickListener(QuitListener); ID_delete.setOnClickListener(ID_deleteListener); ID_check.setOnClickListener(ID_checkListener); ID_update.setOnClickListener(ID_updateListener); } } DBAdapter代码: public class DBAdapter { private static final String DB_NAME=\"people.db\"; private static final String DB_TABLE=\"peopleinfo\"; private static final int DB_VERSION=1; public static final String KEY_ID=\"_id\"; public static final String KEY_NAME=\"name\"; public static final String KEY_SEX=\"sex\"; public static final String KEY_PLACE=\"place\"; public static final String KEY_PAY=\"pay\"; private SQLiteDatabase db; private final Context context; private DBOpenHelper dbOpenHelper; private static class DBOpenHelper extends SQLiteOpenHelper{ public DBOpenHelper(Context context,String name,CursorFactory factory,int version){ } private static final String DB_CREATE=\"create table super(context,name,factory,version); \"+DB_TABLE+\"(\"+KEY_ID+\" integer primary key autoincrement, \"+KEY_NAME+\" text not null, \"+KEY_SEX+\" text not null, \"+KEY_PLACE+\" text not null, \"+KEY_PAY+\" integer);\"; @Override public void onCreate(SQLiteDatabase _db) { } @Override // TODO Auto-generated method stub _db.execSQL(DB_CREATE); public void onUpgrade(SQLiteDatabase _db, int _oldVersion, int _newVersion) { } public DBAdapter(Context _context){ } public void open() throws SQLiteException { try{ dbOpenHelper=new context=_context; } // TODO Auto-generated method stub _db.execSQL(\"DROP TABLE IF EXISTS \"+DB_TABLE); onCreate(_db); DBOpenHelper(context,DB_NAME,null,DB_VERSION); } public void close(){ if(db!=null){ db=dbOpenHelper.getWritableDatabase(); }catch(SQLiteException ex){ } db=dbOpenHelper.getReadableDatabase(); ex.printStackTrace(); } } db.close(); db=null; public void insert(People people){ } public void deleteAllData(){ } public void deleteOneData(long id){ if(this.getOneData(id)!=null){ db.delete(DB_TABLE, KEY_ID+\"=\"+id, null); Toast.makeText(context, \"删除数据成功\} db.delete(DB_TABLE, null, null); Toast.makeText(context, \"删除数据成功\ContentValues newValues=new ContentValues(); newValues.put(KEY_NAME, people.Name); newValues.put(KEY_SEX, people.Sex); newValues.put(KEY_PLACE, people.Place); newValues.put(KEY_PAY, people.Pay); db.insert(DB_TABLE, null, newValues); Toast.makeText(context, \"添加数据成功\ } public void updateOneData(long id,People people){ } private People[] ConvertToPeople(Cursor cursor){ int resultCounts=cursor.getCount(); if(resultCounts==0||!cursor.moveToFirst()){ } People[] peoples=new People[resultCounts]; for(int i=0;i if(this.getOneData(id)!=null){ ContentValues updateValues=new ContentValues(); updateValues.put(KEY_NAME, people.Name); updateValues.put(KEY_SEX, people.Sex); updateValues.put(KEY_PLACE, people.Place); updateValues.put(KEY_PAY, people.Pay); db.update(DB_TABLE, updateValues, KEY_ID+\"=\"+id, null); Toast.makeText(context, \"更新数据成功\} peoples[i].Name=cursor.getString(cursor.getColumnIndex(KEY_NAME)); peoples[i].Sex=cursor.getString(cursor.getColumnIndex(KEY_SEX)); peoples[i].Place=cursor.getString(cursor.getColumnIndex(KEY_PLACE)); } public People[] getAllData(){ Cursor results=db.query(DB_TABLE, new String[]{KEY_ID, KEY_NAME, } return peoples; peoples[i].Pay=cursor.getInt(cursor.getColumnIndex(KEY_PAY)); cursor.moveToNext(); KEY_SEX, KEY_PLACE, KEY_PAY},null,null,null,null,null); } public People[] getOneData(long id){ Cursor results=db.query(DB_TABLE, new String[]{KEY_ID, KEY_NAME, return ConvertToPeople(results); KEY_SEX, KEY_PLACE, KEY_PAY},KEY_ID+\"=\"+id,null,null,null,null); if(ConvertToPeople(results)!=null) return ConvertToPeople(results); else Toast.makeText(context, \"未找到相关记录 \ } People代码: public class People { public int ID=-1; public String Name; public String Sex; public String Place; public int Pay; @Override public String toString(){ } String result=\"\"; result+=\"ID:\"+this.ID+\",\"; result+=\"姓名:\"+this.Name+\",\"; result+=\"性别:\"+this.Sex+\",\"; result+=\"部门:\"+this.Place+\",\"; result+=\"工资:\"+this.Pay+\";\"; return result; } return null; } 3、结果显示 实验七 天气预报 一、 实验目的 综合运用以往所学的知识和技巧,从需求分析、界面设计、模块功能和程序开发等几个方面,学习 Android 应用程序的设计思路及开发方法。从而掌握 Android 应用程序的设计方法和多种组件应用能力。 二、实验设备 1、硬件设备 系统类型:Win7 版本 32 位,处理器:Intel(R)Core(TM)i3-2350M CPU @2.30GHz 2.30GHz 安装内存(RAM):8.00GB 2、软件设备 Win7 操作系统、Eclipse、JDK、Android SDK、ADT 三、实验内容 1、实验要求 设计一个天气预报软件。 2、详细设计 HistoryActivity.java public class HistoryActivity extends ListActivity{ final static int MENU_REFRESH = Menu.FIRST; final static int MENU_DELETE = Menu.FIRST+1; final static int MENU_QUIT = Menu.FIRST+2; private DBAdapter dbAdapter ; private SmsAdapter dataAdapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); dbAdapter = new DBAdapter(this); dbAdapter.open(); dataAdapter = new SmsAdapter(this); setListAdapter(dataAdapter); } @Override public boolean onCreateOptionsMenu(Menu menu){ menu.add(0,MENU_REFRESH ,0,\"刷新\"); menu.add(0,MENU_DELETE,1,\"清空数据\"); menu.add(0,MENU_QUIT,1,\"退出\"); return true; } @Override public boolean onOptionsItemSelected(MenuItem item){ switch(item.getItemId()){ case MENU_REFRESH: SmsAdapter.RefreshData(); setListAdapter(dataAdapter); return true; } } case MENU_DELETE: dbAdapter.DeleteAllSms(); return true; case MENU_QUIT: } finish(); break; return false; SetupActivity.java public class SetupActivity extends Activity{ final static int MENU_RESTORE = Menu.FIRST; final static int MENU_QUIT = Menu.FIRST+1; private EditText cityNameView; private EditText refreshSpeedView; private CheckBox smsServiceView; private CheckBox saveSmsInfoView; private EditText keyWorkView; public static DBAdapter dbAdapter ; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); dbAdapter = new DBAdapter(this); dbAdapter.open(); UpdateUI(); applyBtn.setOnClickListener(new View.OnClickListener() { }); @Override public void onClick(View v) { } SaveConfig(); cancelBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub dbAdapter.LoadConfig(); UpdateUI(); } } ); } @Override public boolean onCreateOptionsMenu(Menu menu){ menu.add(0,MENU_RESTORE ,0,\"恢复初始设置\"); menu.add(0,MENU_QUIT,1,\"退出\"); return true; } @Override public boolean onOptionsItemSelected(MenuItem item){ switch(item.getItemId()){ case MENU_RESTORE: RestoreDefaultSetup(); return true; } case MENU_QUIT: } finish(); break; return false; private void RestoreDefaultSetup(){ } private void UpdateUI(){ Config.LoadDefaultConfig(); UpdateUI(); dbAdapter.SaveConfig(); } cityNameView.setText(Config.CityName); refreshSpeedView.setText(Config.RefreshSpeed); keyWorkView.setText(Config.KeyWord); private void SaveConfig(){ } Config.CityName = cityNameView.getText().toString().trim(); Config.RefreshSpeed = refreshSpeedView.getText().toString(); if (smsServiceView.isChecked()){ } else{ } if (saveSmsInfoView.isChecked()){ } else{ } Config.KeyWord = keyWorkView.getText().toString().trim(); dbAdapter.SaveConfig(); Config.SaveSmsInfo = \"false\"; Config.SaveSmsInfo = \"true\"; Config.ProvideSmsService = \"false\"; Config.ProvideSmsService = \"true\"; } WeatherActivity.java public class WeatherActivity extends Activity{ final static int MENU_START_SERVICE= Menu.FIRST ; final static int MENU_STOP_SERVICE = Menu.FIRST + 1; final static int MENU_REFRESH = Menu.FIRST + 2; final static int MENU_QUIT = Menu.FIRST +3; private DBAdapter dbAdapter ; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); dbAdapter = new DBAdapter(this); dbAdapter.open(); } @Override public boolean onCreateOptionsMenu(Menu menu){ menu.add(0,MENU_START_SERVICE,0,\"启动服务\"); menu.add(0,MENU_STOP_SERVICE,1,\"停止服务\"); menu.add(0,MENU_REFRESH ,2,\"刷新\"); menu.add(0,MENU_QUIT,3,\"退出\"); return true; dbAdapter.LoadConfig(); } @Override public boolean onOptionsItemSelected(MenuItem item){ final Intent serviceIntent = new Intent(this, WeatherService.class); switch(item.getItemId()){ case MENU_REFRESH: RefreshWeatherData(); return true; case MENU_START_SERVICE: startService(serviceIntent); return true; case MENU_STOP_SERVICE: stopService(serviceIntent); return true; } case MENU_QUIT: } finish(); break; return false; private void RefreshWeatherData(){ //(0) 当前温度 String msgCondition = \"\"; msgCondition += \"Temperature:\" + Weather.current_temp + \msgCondition += Weather.current_humidity ; currentCondition.setText(msgCondition); currentWind.setText(Weather.current_wind + \ Weather.current_date_time); currentImage.setImageBitmap(Weather.current_image); currentCity.setText(Weather.city); //(1) 预报:第1天 forcastD1Date.setText(Weather.day[0].day_of_week); forcastD1Image.setImageBitmap(Weather.day[0].image); String msgD1Temperature = Weather.day[0].high + \"/\" + Weather.day[0].low; forcastD1Temperature.setText(msgD1Temperature); //(2) 预报:第2天 forcastD2Date.setText(Weather.day[1].day_of_week); forcastD2Image.setImageBitmap(Weather.day[1].image); String msgD2Temperature = Weather.day[1].high + \"/\" + Weather.day[1].low; forcastD2Temperature.setText(msgD2Temperature); //(3) 预报:第3天 forcastD3Date.setText(Weather.day[2].day_of_week); forcastD3Image.setImageBitmap(Weather.day[2].image); String msgD3Temperature = Weather.day[2].high + \"/\" + Weather.day[2].low; forcastD3Temperature.setText(msgD3Temperature); //(4) 预报:第4天 forcastD4Date.setText(Weather.day[3].day_of_week); forcastD4Image.setImageBitmap(Weather.day[3].image); String msgD4Temperature = Weather.day[3].high + \"/\" + Weather.day[3].low; } WeatherDemo.java public class WeatherDemo extends TabActivity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TabHost tabHost = getTabHost(); tabHost.addTab(tabHost.newTabSpec(\"TAB1\"). setContent(new Intent(this, WeatherActivity.class))); } forcastD4Temperature.setText(msgD4Temperature); tabHost.addTab(tabHost.newTabSpec(\"TAB2\"). setContent(new Intent(this, HistoryActivity.class))); tabHost.addTab(tabHost.newTabSpec(\"TAB3\"). } } WeatherService.java public class WeatherService extends Service{ private DBAdapter dbAdapter ; private Thread workThread; private static ArrayList public static void RequerSMSService(SimpleSms sms){ } private void SaveSmsData(SimpleSms sms){ } @Override public void onCreate() { super.onCreate(); } dbAdapter.SaveOneSms(sms); } smsList.add(sms); setContent(new Intent(this, SetupActivity.class))); dbAdapter = new DBAdapter(this); dbAdapter.open(); Toast.makeText(this, \"天气服务启动\ workThread = new Thread(null,backgroudWork,\"WorkThread\"); } @Override public void onStart(Intent intent, int startId) { super.onStart(intent, startId); if (!workThread.isAlive()){ workThread.start(); } } @Override public void onDestroy() { super.onDestroy(); Toast.makeText(this, \"天气服务启动停止\ Toast.LENGTH_SHORT).show(); workThread.interrupt(); } @Override public IBinder onBind(Intent intent) { return null; } private Runnable backgroudWork = new Runnable(){ }; private void ProcessSmsList(){ if (smsList.size()==0){ } SmsManager smsManager = SmsManager.getDefault(); PendingIntent mPi = PendingIntent.getBroadcast(this, 0, new Intent(), 0); while(smsList.size()>0){ return; @Override public void run() { } try { while(!Thread.interrupted()){ } ProcessSmsList(); GetGoogleWeatherData(); Thread.sleep(1000); } catch (InterruptedException e) { } e.printStackTrace(); SimpleSms sms = smsList.get(0); smsList.remove(0); smsManager.sendTextMessage(sms.Sender, null, Weather.GetSmsMsg(), mPi, null); } private void GetGoogleWeatherData(){ Log.i(\"TIMER\if (timeCounter-- < 0){ timeCounter = Integer.parseInt(Config.RefreshSpeed); Log.i(\"TIMERry { WeatherAdapter.GetWeatherData(); } sms.ReturnResult = Weather.GetSmsMsg(); SaveSmsData(sms); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Throwable e) { } // TODO Auto-generated catch block e.printStackTrace(); } } } Forecast.java package import public class Forecast { } public String day_of_week; public String low; public String high; public String image_url; public Bitmap image; public String condition; Weather.java package import public class Weather { public static String city; public static String forecase_date; public static String current_date_time; public static String current_condition; public static String current_temp; public static String current_humidity; public static String current_image_url; public static Bitmap current_image; public static String current_wind; public static Forecast[] day = new Forecast[4]; static { } public static String GetSmsMsg(){ String msg = \"\"; msg += city + \",\"; msg += current_condition + \ + current_temp+\". \"; msg += day[0].day_of_week+\ + day[0].condition + \ + day[0].high + \"/\" + day[0].low; for (int i = 0; i< day.length; i++){ } day[i] = new Forecast(); } } return msg; 3、结果显示
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务