1. 程式人生 > >2015高職院校移動網際網路應用軟體開發賽準備小結

2015高職院校移動網際網路應用軟體開發賽準備小結

1.系統設計(略)

2.程式排錯(略)

3.功能編碼(可以整理)

Ui佈局 (簡單的 拖動佈局)

網路通訊(JSON)

       正常流程:根據介面去http請求,得到JSON,傳送Handler, 接收資料反映到介面。

       通用的post請求

/**
	 * 通用的post請求
	 * 
	 * @param url
	 *            介面地址
	 * @param params
	 *            傳引數和值的map集合
	 * @return json 字串
	 */
	public static String generalPost(String url, Map<String, String> params) {
		HttpPost request = new HttpPost(url);
		// 建立HTTP POST請求
		try {
			JSONObject jsonRequest = new JSONObject();
			if (params != null) {
				for (String key : params.keySet()) {
					jsonRequest.put(key, params.get(key));
				}
			}
			// map-->json-->stringentity
			StringEntity se = new StringEntity(jsonRequest.toString());
			request.setEntity(se);
			HttpResponse httpResponse = new DefaultHttpClient()
					.execute(request);
			String retSrc = EntityUtils.toString(httpResponse.getEntity());
			return retSrc;
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		} catch (ClientProtocolException e) {
			e.printStackTrace();
		} catch (ParseException e) {
			e.printStackTrace();
		} catch (JSONException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return "";
	}
/**
	 * 通用JSON解析
	 * 
	 * @param jsonString   JSON資料
	 * 
	 * @param keyString  返回key
	 *            
	 * @return
	 */
	public String backJson(String jsonString, String keyString) {
		String val = null;
		try {
			JSONObject jsonResponse = new JSONObject(jsonString);
			val = jsonResponse.getString(keyString);
		} catch (JSONException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return val;
	}

內容推送(Notification)

/**
	 * 在狀態列顯示通知
	 * 
	 * 加許可權 <uses-permission android:name="android.permission.VIBRATE" />
	 * 
	 */
	private void showNotification() {
		// 建立一個NotificationManager的引用
		NotificationManager notificationManager = (NotificationManager) this
				.getSystemService(android.content.Context.NOTIFICATION_SERVICE);

		// 定義Notification的各種屬性
		Notification notification = new Notification(R.drawable.ic_launcher,
				"測試系統", System.currentTimeMillis());
		// FLAG_AUTO_CANCEL 該通知能被狀態列的清除按鈕給清除掉
		// FLAG_NO_CLEAR 該通知不能被狀態列的清除按鈕給清除掉
		// FLAG_ONGOING_EVENT 通知放置在正在執行
		// FLAG_INSISTENT 是否一直進行,比如音樂一直播放,知道使用者響應
		notification.flags |= Notification.FLAG_ONGOING_EVENT; // 將此通知放到通知欄的"Ongoing"即"正在執行"組中
		notification.flags |= Notification.FLAG_NO_CLEAR; // 表明在點選了通知欄中的"清除通知"後,此通知不清除,經常與FLAG_ONGOING_EVENT一起使用
		notification.flags |= Notification.FLAG_SHOW_LIGHTS;
		// DEFAULT_ALL 使用所有預設值,比如聲音,震動,閃屏等等
		// DEFAULT_LIGHTS 使用預設閃光提示
		// DEFAULT_SOUNDS 使用預設提示聲音
		// DEFAULT_VIBRATE 使用預設手機震動,需加上<uses-permission
		notification.defaults = Notification.DEFAULT_LIGHTS;
		// 疊加效果常量
		// notification.defaults=Notification.DEFAULT_LIGHTS|Notification.DEFAULT_SOUND;
		notification.ledARGB = Color.BLUE;
		notification.ledOnMS = 5000; // 閃光時間,毫秒

		// 設定通知的事件訊息
		CharSequence contentTitle = "測試系統標題"; // 通知欄標題
		CharSequence contentText = "測試系統內容"; // 通知欄內容
		Intent notificationIntent = new Intent(MainActivity.this,
				MainActivity.class); // 點選該通知後要跳轉的Activity
		PendingIntent contentItent = PendingIntent.getActivity(this, 0,
				notificationIntent, 0);
		notification.setLatestEventInfo(this, contentTitle, contentText,
				contentItent);

		// 把Notification傳遞給NotificationManager
		notificationManager.notify(0, notification);
	}

	// 刪除通知
	private void clearNotification() {
		// 啟動後刪除之前我們定義的通知
		NotificationManager notificationManager = (NotificationManager) this
				.getSystemService(NOTIFICATION_SERVICE);
		notificationManager.cancel(0);

	}


資料圖表展現(折線圖)

          android畫圖 常用的是第三方常用的開源類庫,例子:點選開啟連結, 非常簡單好用。但是估計比賽時,不一定會給開源jar包,所以得自己畫圖,比較複雜 例子:點選打            開連結

本地資料庫(Sqlite)

//開啟或建立test.db資料庫
			SQLiteDatabase db = openOrCreateDatabase("test.db", Context.MODE_PRIVATE, null);
			db.execSQL("DROP TABLE IF EXISTS person");
			//建立person表
			db.execSQL("CREATE TABLE person (_id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR, age SMALLINT)");
			//實體類
			Person person = new Person();
			person.name = "john";
			person.age = 30;
			//插入資料
			db.execSQL("INSERT INTO person VALUES (NULL, ?, ?)", new Object[]{person.name, person.age});
			//新增、更新和刪除
//			db.executeSQL(String sql);
//			db.executeSQL(String sql, Object[] bindArgs);//sql語句,然後第二個引數是實際的引數集			
			//查詢資料
			Cursor c = db.rawQuery("SELECT * FROM person WHERE age >= ?", new String[]{"33"});
			while (c.moveToNext()) {
				int _id = c.getInt(c.getColumnIndex("_id"));
				String name = c.getString(c.getColumnIndex("name"));
				int age = c.getInt(c.getColumnIndex("age"));
				Log.i("db", "_id=>" + _id + ", name=>" + name + ", age=>" + age);
			}
			c.close();
			
			
			//關閉當前資料庫
			db.close();