2013年12月28日 星期六

2013年12月4日 星期三

溫故知新 DDL、DML、DCL、DQL

資料定義語言:
DDL(Data Definition Language)


用來定義資料庫、資料表、檢視表、索引、預存程序、觸發程序、函數等資料庫物件。
可以用來建立、更新、刪除 table,schema,domain,index,view

常見的指令有:
CREATE 建立資料庫的物件
ALTER 變更資料庫的物件
DROP 刪除資料庫的物件

2013年10月31日 星期四

[Log4j] 簡易Log4j 設定

好用的 訊息紀錄工具 Log4j
簡易測試程式

package com.test;
import org.apache.log4j.Logger;

public class Log4jTest {
    public static void main(String[] args){
        Logger logger = Logger.getLogger("Log4jTest.class");
        logger.debug("Hello World!!!");
        logger.info("What a beautiful day!!");
    }
}

2013年9月17日 星期二

Eclipse 中新增 struts2 的 DTD 定義

目的:在無法連網時一樣可以讓 eclipse 在編輯 xml 檔案時,Alt+? 顯示編輯提示
以 struts2 2.3 為例:
將上圖圈選的文字複製下來,等一下會用到 
-//Apache Software Foundation//DTD Struts Configuration 2.3//EN
http://struts.apache.org/dtds/struts-2.3.dtd

2013年8月23日 星期五

【轉貼】Tomcat與UTF-8編碼

由於Tomcat預設的編碼為ISO-8859-1,所以當使用Tomcat架設JSP與Mysql資料庫時
,便要注意中文編碼的問題。最好的方法就是把 Tomcat、web與Mysql全部的編碼一
律設定為UTF-8,下面將說明如何將Tomcat的編碼處理設定為UTF-8。

1. GET請求部份
Tomcat使用ISO-8859-1編碼作為預設的URL編碼,所以當web發出夾帶中文訊息的
get請求時,資料就會變成亂碼。

解決方法是修改\Tomcat\conf\server.xml檔案,找到Connector標籤,加入
URIEncoding="UTF-8"即可。
========
Connector port="8080" protocol="HTTP/1.1"
 URIEncoding="UTF-8"
 connectionTimeout="20000"
 redirectPort="8443"
========= 

【FROM】http://roymercadian.blogspot.tw/2012/12/tomcatutf-8.html
【FROM】http://overinfinityresearch.blogspot.tw/2007/10/tomcat6-servletget.html

2013年7月25日 星期四

Aqua Data Studio 中文亂碼 及 記憶體調整

中文亂碼
     檔案>選項>一般>格線結果字集> 修改為"新細明體"


預設 JVM 記憶體調整
     修改檔案 C:\Program Files\Aqua Data Studio 7.0 - 32bit\datastudio.ini
     尋常字串: vmarg.2=-Xmx256M
     修改紅色部份 EX: vmarg.2=-Xmx512M

2013年7月16日 星期二

第一支Tapestry... Hello Tapestry


環境 Tapestry 4.0 / eclipse / Tomcat 6
Tapestry 預設的 Html templet 檔名為 Home.html
對應的 page 檔案應取名為 Home.page
對應的 class 檔案應取名為 Home.java
對應的 application 檔案 應取名為 Servlet的名稱.application
以下就是最基本的入門應用

2013年7月7日 星期日

在Eclipse中讓Tomcat可以每次都更新靜態檔案如*.html..等

EclipseTomcat可以每次都更新靜態檔案如*.html..
不需要重新部屬...
第一種方法是在Tomcat啟動前加入參數
Disabling caching in Tapestry
It is troublesome to reload the application before each test run. To solve the first part of the problem, you can tell
Tapestry to not to cache HTML and .page files. To do that, you need to set a JVM system property
26 Chapter 1 Getting Started with Tapestry
org.apache.tapestry.disable-caching to true. If you were starting the JVM yourself, you would run it like:
java -Dorg.apache.tapestry.disable-caching=true ...
However, as the JVM is started by Tomcat, you need to setup a environment variable JAVA_OPTS before running
startup.bat:
Now, you can change say Home.html and the change will take effect immediately.

2013年7月6日 星期六

Eclipse Content Assist (程式碼建議) 出不來 alt+/ 失效

Eclispe
->Window->Preference->Java->Content Assist->Advance
確認紅框中的Java Proposals是否勾選,或者是點選下方的 Restore Defaults來恢復預設值。

參考文章:
http://chip.twbbs.org/2010/12/eclipse-content-assist.html

2013年6月23日 星期日

Service BroadcastReceiver Notification 整合應用--在通知列上顯示時間,並常駐!!!

小小的研究心得~分享給大家!!!
程式在按開始後會顯示目前時間及一個計數值,並顯示在通知列上,且通知列上的時間
會持續更新
(顯示計數值是為了確定程式有持續在背景運行)
當使用者按裝置上的Home鍵,程式仍會在背景運行,可點擊通知列上的圖示返回程式
程式畫面:
 

程式流程:
MainActivity ==> 執行 Service (要執行的動作/運算)
Service ==> 運用 BroadcastReceiver 改變主畫面 UI / 生成 Notification
AndroidManifest.xml 要記得加上 service

2013年6月21日 星期五

鐵馬族的好幫手 --> 樂活鐵馬 v1.10 已於 google play 上架


樂活鐵馬 v1.10
提供:
即時定位
(提供時間/速度/距離/方位/精確度等訊息)
路徑紀錄
(背景運作將行經路徑資料寫進資料庫)
歷史紀錄查詢
(提供查詢時間所記錄的路徑騎乘資訊)
鄰近商家提示
(地址/聯絡方式/路徑規劃)
提供帳號登入功能
(可供多人使用同一套APP)

2013年6月11日 星期二

取得自定 ListView 中的 Widget,如 TextView 的值

利用 findViewById 即可
程式碼:
以下為監聽 OnItemClickListener 事件
//==============================
@Override
public void onItemClick(AdapterView parent, View view, int position, long id) {
Log.i("==MainGo==", "進入 listView onItemClick 區段");
TextView tv = (TextView)view.findViewById(R.id.tv_list_type);
Log.i("==MainGo==", tv.getText().toString());
}


2013年6月6日 星期四

如何使用 DialogFragment 做出自己的 DatePickerDialog 並將時間設定值設定在EditText元件中

自訂一個 class extends DialogFragment
public class MyDialogFragment extends DialogFragment implements OnDateSetListener{

@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {

String mYear = String.valueOf(year);
String mMonth = (monthOfYear+1 > 9)? (monthOfYear+1) +"" : "0" + (monthOfYear+1);
String mDay = (dayOfMonth > 9)? (dayOfMonth) +"" : "0" + (dayOfMonth);

EditText etday = (EditText)getActivity().findViewById(R.id.et_birthday);
etday.setText(mYear + mMonth + mDay);
}

2013年6月3日 星期一

Android eclipse logcat 錯誤排解清單

只要有遇到就會加進這篇

Unexpected value from nativeGetEnabledTags: 0
http://stackoverflow.com/questions/13416142/unexpected-value-from-nativegetenabledtags-0

“com.android.exchange.ExchangeService has leaked …” error when running emulator [closed]
http://stackoverflow.com/questions/14111677/com-android-exchange-exchangeservice-has-leaked-error-when-running-emulato
http://stackoverflow.com/questions/13765122/various-android-logcat-errors

Android LogCat device disconnected
: E/(): Device disconnected
http://stackoverflow.com/questions/15169115/android-logcat-device-disconnected

Android 移除狀態列、標題(全螢幕),螢幕固定方向,取得螢幕大小

Android 單一頁面移除狀態列、移除標題(全螢幕)

requestWindowFeature(Window.FEATURE_NO_TITLE);      getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

全部頁面移除狀態列、移除標題(全螢幕)

AndroidManifest.xml中在起始的activity中加入
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

2013年5月30日 星期四

【轉貼備份】JAVA String.format 方法使用介紹


[轉貼]JAVA String.format 方法使用介紹
在JDK1.5中,String類增加了一個非常有用的靜態函數format(String format, Objece... argues),可以將各類數據格式化為字符串並輸出。其中format參數指定了輸出的格式,是最複雜也是最難掌握的一點,而argues則是一系列等 待被格式化的對象。該函數對c語言中printf函數的用法進行了一定的模仿,因此有c語言基礎的人學起來會輕鬆許多。下面我們著重討論一下format 參數的格式及含義。
format參數中可以包含不需要轉化的字符串,這些字符串是你寫什麼,最終就輸出什麼。同時還包含一些特殊格式的內容,來指定將哪個對象來轉換,以及轉 換成什麼形式。這種特殊的格式通通以%index$開頭,index從1開始取值,表示將第index個參數拿進來進行格式化。這一點比c語言要強一點, c語言只能按照參數的順序依次格式化,而java可以選擇第n個參數來格式化。由於該函數可以對任意一個對像進行格式化,不同的對象適用的參數也不同,因 此我們下面分類來討論。

2013年5月29日 星期三

解決 Chrome 更新 flashplay plugin後,youtube 播放有影像無聲音問題

先複製 chrome://plugins/ 到網址列 檢查一下 Adobe Flash Player 是否有兩個

保留這一個
名稱:Shockwave Flash
說明:Shockwave Flash 11.7 r700
版本:11,7,700,202
位置:C:\Windows\SysWOW64\Macromed\Flash\NPSWF32_11_7_700_202.dll
類型:NPAPI

另一個就停用,重新啟動 chrome 應該就可以了

另一個看到個可能是,將其停用
名稱:Shockwave Flash
說明:Shockwave Flash 11.7 r700
版本:11.7.700.203
位置:C:\Users\William\AppData\Local\Google\Chrome\Application\27.0.1453.94\PepperFlash\pepflashplayer.dll
類型:PPAPI (獨立程序)

http://get.adobe.com/tw/flashplayer/?no_redirect 可安裝最新版

照理來說更新之後舊版應該會被取代 不知道甚麼原因結果變成共存 所以才會沒聲音?
停用其中一個就可以了

2013年5月28日 星期二

三套好用的SQLite 圖形化管理工具


工欲善其事,必先利其器,與其一直使用命令列 key in key到掛,
不如找一套好用的工具帶你上天堂!!!增加你的工作效率

(1)SQLiteStudio
個人最常用的一套,使用方式很直覺,最常用的快捷鍵為alt+e
還有F9...真的還蠻方便的,另外還提供方便的介面可同時管理
多個SQLite 資料庫
http://sqlitestudio.pl/


2013年5月25日 星期六

Android 禁止螢幕進入休眠和鎖定

最快的方法為
在 setContentView 之前加入下列程式片段

getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

setContentView(R.layout.main); 

【參考網址】
http://blog.csdn.net/chenyafei617/article/details/6575621

2013年5月24日 星期五

Google Maps Android API v2 簡易練習

由 Google Android SDK開發範例大全|第3版 範例 修改而來
原本為 v1 版本,手工轉為 v2 版本,參照 Google Map API demo
若開啟後發生res 資源檔發生問題,請執行 clean 即可
Layout 佈局:


執行畫面:

原始檔案:
https://dl.dropboxusercontent.com/u/15526319/Android/testGoogleMap003.zip

2013年5月18日 星期六

Google Maps Android API v2 官方 Demo 的使用步驟

參考官方文件
https://developers.google.com/maps/documentation/android/intro?hl=zh-TW#sample_code
裡面提到

  1. Select File > Import > Android > Existing Android Code Into Workspace and click Next.
  2. Select Browse..., enter /extras/google/google_play_services/libproject/google-play-services_lib, and click Finish.
Once you have installed Google Play services, you can view the sample code, or run the sample app locally. The sample app is an Eclipse project that you can run on your device as follows:
  1. Select File > Import > Android > Existing Android Code Into Workspace and click Next.
  2. Select Browse..., enter /extras/google/google_play_services/samples/maps, and click Finish.
  3. Select Project > Properties, select Java Build Path, and navigate to Libraries.
  4. Select Add External Jars, include the following jar files, and click OK:
    • /extras/android/compatibility/v4/android-support-v4.jar
  5. Add your own Google Maps Android API key.
  6. Select Run > Run to test the sample app.

2013年5月17日 星期五

使用 Intent 跳到其他的Activity 並搭配 startActivityForResult

MainActivity.java
package com.example.basic_intent;

//使用 Intent 跳到其他的Activity
//並使用 startActivityForResult() 來傳送 requestCode
//並設定 onActivityResult() 來接收過濾 requestCode / resultCode
//並在 MainTwo.java 中設定要丟回來的資料到 Intent 中
//最後  MainActivity.java onActivityResult() 接收資料
//要修改 AndroidManifest.xml
//將 Activity 加到啟動程序中

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {

 final static int KEY_CHAIN = 333;
 final static int KEY_HOLE = 333;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  
  Log.i("生命週期", "1_onCreate");
  
  Button go2 = (Button) this.findViewById(R.id.button1);
  
  go2.setOnClickListener(new View.OnClickListener() {
   
   @Override
   public void onClick(View v) {
    Intent intent = new Intent(getBaseContext(), MainTwo.class);    
    //startActivity(intent);
    startActivityForResult(intent, KEY_CHAIN);
   }
  });
 }
 
 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  
  Log.i("返回訊息", "回到onActivityResult");
  
  if(requestCode == KEY_CHAIN){
   //if(resultCode == RESULT_OK){
   if(resultCode == KEY_HOLE){
    Log.i("返回訊息", "正常收到KEY_HOLE的資料");
    //取回MainTwo 送回來的資料
    Log.i("返回訊息", data.getExtras().getString("result"));
   }
  }
 }
 
 @Override
 protected void onStop() {
  // TODO Auto-generated method stub
  super.onStop();
  //finish();
  Log.i("生命週期", "1_onStop");
  //Toast.makeText(getBaseContext(), "go2 結束了", Toast.LENGTH_LONG).show();
 }

 @Override
 protected void onPause() {
  // TODO Auto-generated method stub
  super.onPause();
  Log.i("生命週期", "1_onPause");
 }

 @Override
 protected void onRestart() {
  // TODO Auto-generated method stub
  super.onRestart();
  Log.i("生命週期", "1_onRestart");
 }

 @Override
 protected void onResume() {
  // TODO Auto-generated method stub
  super.onResume();
  Log.i("生命週期", "1_onResume");
 }

 @Override
 protected void onStart() {
  // TODO Auto-generated method stub
  super.onStart();
  Log.i("生命週期", "1_onStart");
 }

 @Override
 protected void onDestroy() {
  // TODO Auto-generated method stub
  super.onDestroy();
  Log.i("生命週期", "1_onDestroy");
 }
}

MainTwo.java
package com.example.basic_intent;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
//import android.widget.Toast;

public class MainTwo extends Activity {

 final static int KEY_CHAIN = 333;
 final static int KEY_HOLE = 333; 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_two);
  
  Log.i("生命週期", "2_onCreate");
  
  Button go1 = (Button) this.findViewById(R.id.button1);
  
  go1.setOnClickListener(new View.OnClickListener() {
   
   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    //也可以只送 resultCode,不送任何資料
    //setResult(KEY_HOLE);
    
    Intent intent = new Intent();
    //intent.setClass(getBaseContext(), MainActivity.class);
    intent.putExtra("result", "我在測試送回去的結果");
    //setResult(RESULT_OK,intent);
    setResult(KEY_HOLE,intent);
    //startActivity(intent);

    MainTwo.this.finish();
   }
  });
 }

 @Override
 protected void onStop() {
  super.onStop();
  //finish();
  Log.i("生命週期", "2_onStop");
  //Toast.makeText(getBaseContext(), "go2 結束了", Toast.LENGTH_LONG).show();
 }

 @Override
 protected void onPause() {
  super.onPause();
  Log.i("生命週期", "2_onPause");
 }

 @Override
 protected void onRestart() {
  super.onRestart();
  Log.i("生命週期", "2_onRestart");
 }

 @Override
 protected void onResume() {
  super.onResume();
  Log.i("生命週期", "2_onResume");
 }

 @Override
 protected void onStart() {
  super.onStart();
  Log.i("生命週期", "2_onStart");
 }

 @Override
 protected void onDestroy() {
  super.onDestroy();
  Log.i("生命週期", "2_onDestroy");
 }
}

MySQL指令 mysqldump(匯出資料) 用法說明

資料庫資料匯出(dump) 
範例: 
mysqldump -u test -h 192.168.0.100 -p testdb > alltable.sql 
mysqldump -u test -h 192.168.0.100 -p testdb testtable > alltesttable.sql 
mysqldump -u test -h 192.168.0.100 -d -p testdb testtable > schematesttable.sql 
mysqldump -u test -h 192.168.0.100 -d -p testdb testtable1 testtable2> schemasometable.sql 

資料庫資料匯入 
範例: 
mysql -u test -p testdb < testtable.sql 

參數說明 
>: 表示匯出資料 
<: nbsp="" span="">
-u: mysql使用者 
-h: 連線host IP或Domain Name 
-d: 只需要匯出(dump)Table的結構, 若沒有此參數, 會將Table的結構和資料一併匯出 
-p: 需要密碼, 指令執行後待會會要求輸入 
testdb: 指定要處理的DB名稱 
testtable: 指定要處理的Table名稱 
testtable.sql: 匯入或是匯出Table資料的SQL語法


【來源】
http://forum.liferec.com/viewtopic.php?t=185

修改 MySQL 5.x 預設語系為 utf8 解決中文亂碼問題

解決 MySQL 5.x 資料庫 插入中文資料會變成亂碼的問題
修改 MySQL 安裝目錄中的 my.ini 檔案


[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8

[client]
default-character-set = utf8

加入上述的設定

接著可下 MySQL 指令 驗證 看看是否都已成為 utf8
mysql> SHOW  VARIABLES  LIKE  '%char%'; 


【參考資料】
http://stackoverflow.com/questions/3513773/change-mysql-default-character-set-to-utf8-in-my-cnf
http://www.aydnw.com/html/database/mysql/4419.html
http://j796160836.pixnet.net/blog/post/26585908-%5Bmysql%5D%E6%9B%B4%E6%94%B9%E9%A0%90%E8%A8%AD%E8%B3%87%E6%96%99%E5%BA%AB%E7%9A%84%E7%B7%A8%E7%A2%BC

若不想更改資料庫的設定,可於每次PHP 傳送資料時先設定

//此為臨時的設定,重開MySQL 就會恢復
//可藉由設定 PHP 的 My.ini 來固定設定
//設定使用的字集
mysql_query("set character set 'utf8'");
//設定使用的字集
mysql_query("set names 'utf8'");

【參考資料】
http://fanchie.blogspot.tw/2008/11/mysql-set-names-utf8.html

2013年5月16日 星期四

在 Java 中簡易建立與 MySQL 資料的連線流程

在 Java 中簡易建立與 MySQL 資料的連線流程
註冊 jdbc Driver
設定 Connection
建立 Statment
取得 ResultSet
//初始化 jdbc connector
try {
  Class.forName("com.mysql.jdbc.Driver");
  Connection con;
//使用DriverManager 工廠類別得到 Conneciton
  String jdbcStr ="jdbc:mysql://localhost/student?useUnicode=true&characterEncoding=Big5";
  con = DriverManager.getConnection( jdbcStr , "root", password);
   
//使用 Connection 取得 stmt 的實體
  Statement stmt = null;
  stmt = con.createStatement();
   
  String sql_all = "select * from mon1;";
  ResultSet rs = null;
//取得 select 的結果 resultset
  rs = stmt.executeQuery(sql_all);
  while(rs.next){
  //運用 rs.getXXX(columnName) 將相關資料取出
  }
} catch (ClassNotFoundException | SQLException ex) {
// TODO Auto-generated catch block
ex.printStackTrace();
}

啟用 PHP 中的 MySQL 支援

Apache + PHP + MySQL
如果安裝完上述三樣軟體之後
發現PHP 在使用 mysql? 函數時,顯示無法調用
請檢查 PHP 是否有正常掛載 mysql 相關服務
可以在 .PHP 中叫用  phpinfo();
看是否有啟動相關服務

phpinfo 所顯示訊息



















[JAVA} Multi Thread Console 程式

共計有三段檔案
go.java
//使用 Thread / Runnable 介面 建立執行緒
//有獨立寫出class 也有直接寫在code 裡面

public class go {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  //第一種寫法 複寫 Thread 中的 run 方法
  go2 another = new go2();
  another.start();
  
  //第二種寫法 複寫 Runnable 介面中的 run 方法
  go3 other_inside = new go3();
  Thread other = new Thread(other_inside);
  other.start();
  
  //第三種寫法 匿名類別  直接複寫 Runnable 中的 run 方法
  Thread four = new Thread(new Runnable() {
   @Override
   public void run() {
    for(int i=0;i<20;i++){
     System.out.println(i + ". I kiss You!!");
     try {
      Thread.sleep(2000);
     } catch (InterruptedException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }
    }    
   }
  });
  four.start();
  
  for(int i=0;i<20;i++){
   System.out.println(i + ". I hate You!!");
   try {
    Thread.sleep(2000);
   } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
 }
}
go2.java
public class go2 extends Thread {

 @Override
 public void run() {
  // TODO Auto-generated method stub
  super.run();
  for(int i=0;i<20;i++){
   System.out.println(i + ". I Love You");
   try{
    Thread.sleep(2000);
   }catch(InterruptedException ex){
    ex.printStackTrace();
   }
  }
 }
}
go3.java
public class go3 implements Runnable {
 @Override
 public void run() {
  // TODO Auto-generated method stub
  for(int i=0;i<20;i++){
   System.out.println(i + ". I like You!!");
   try {
    Thread.sleep(2000);
   } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
 }
}

2013年2月5日 星期二

【轉】適合走下去的人


心理學家認為..判斷男女兩個人是否適合牽手..應考慮以下10個因素..
第一..彼此都是對方的好朋友..不帶任何條件..喜歡與對方在一起..
第二..彼此很容易溝通..互相可以很敞開地坦白任何事情..而不必擔心被對方懷疑或輕視..
第三..兩人在心靈上有共同的理念和價值觀..並且對這些觀念有清楚的認識與追求..
第四..雙方都認為婚姻是一輩子的事..而且雙方都堅定地願意委身在這個長期的婚姻關係中..
第五..當發生衝突或爭執的時候可以一起來解決..而不是等以後來發作..
第六..相處可以彼此逗趣..常有歡笑..在生活中許多方面都會以幽默相待..

2013年1月17日 星期四

2013年1月9日 星期三

【轉】Android getWidth和getMeasuredWidth的正解

一。也許很多童鞋對getWidth()和getMeasuredWidth()的用法有很多的不解,這兩者之間有什麼樣的不
同呢,網上也有各種不同的版本,但大多數都大同小異,從這個地方Ctrl+C,到另一個地方Ctrl+V,沒有
把問題說透,也有一部分文章誤導了大家對這兩個方法的認識,我也是深受其害。這裡先糾正下面的
一個版本的說法,Baidu上一搜一大堆的,可惜這種說法是錯的,所以希望大家就不要再盲目的轉載到
你的空間裡:
                     getWidth得到是某个view的实际尺寸.
                      getMeasuredWidth是得到某view想要在parent view里面占的大小.
想必你也見過這樣的解釋,聽起來這樣的解釋也似雲裡霧裡,沒有把問題點透。

2013年1月7日 星期一

自製軟體 手機簡易測試 -- 測試手機的好幫手 PhoneSimpleTest

小弟第一次寫APP
用來測試一些手機的小功能,分享給大家
英文用的不好請見諒,google翻譯的


說明:
提供簡易測試手機的功能
簡單易用,讓您輕鬆測試裝置的基本功能!
提供簡易測試手機的功能
(1)螢幕:提供純色(RGB)、對比、清晰、灰階等測試。
(2)音效:測試喇叭是否正常。
(3)震動:測試手機震動功能。
(4)閃光燈:以手電筒功能,測試閃光燈是否正常。
(5)觸控:可偵測目前機器最多支援幾點觸控。
(6)Wifi:可測試目前手機無線網路的訊號狀態。
(7)感應器:可測試目前手機所支援的感應器,並顯示相關數值。
(8)GPS:可測試目前GPS的定位及收訊衛星狀況,提供精確度、高度、速度、經度、緯度、方向等相關訊息。

一項一項的測試可以讓您更了解自己的手機有沒有諸如像 亮點、暗點、白斑等問題,並可了解顯示器的色彩表現,也可檢測目前裝置所支援的感應器是否功能運作正常,而在裝置資訊中提供您關於通訊面一些基本訊息,如IEMI、Sim卡序號、GSM訊號強弱等(0~31,但若數值為99,則為系統商不提供相關訊息)。

無廣告,純粹提供測試使用。

Google Play 搜尋 PhoneSimpleTest 或是 手機簡易測試

Google Play 連結