您好,欢迎来到微智科技网。
搜索
您的当前位置:首页Android实验报告

Android实验报告

来源:微智科技网
Android实验报告

专业:计算机科学与技术 班级: 学号: 姓名:武易

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(){

Listlist=new ArrayList(); list.add(\"大一年级\"); list.add(\"大二年级\"); list.add(\"大三年级\"); list.add(\"大四年级\");

ArrayAdapteradapter=new ArrayAdapter(this, spinner.setAdapter(adapter); } } 3、结果显示

实验三 用户界面布局

一、 实验目的

界面布局是用户界面结构的描述,定义界面中所有的元素、结构和相互关系,通过本次实验了解在 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;iToast.makeText(MainActivity.this, \"未找到相关记录results += shows[i]; results += \"\\n\";

\

}

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;ipeoples[i]=new People(); peoples[i].ID=cursor.getInt(0); return null;

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 smsList = new ArrayList(); private static int timeCounter = 1;

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

本站由北京市万商天勤律师事务所王兴未律师提供法律服务