2011年9月29日

Android: 從Content Resolver取得Media (II)

Android Developer: Content Provider
底下節錄翻譯自上面:
//Use ContentUris to produce the base URI for the contact with _ID= 23.
Uri myPerson = ContentUris.withAppendedId(People.CONTENT_URI, 23);
// Alternatively, use the Uri method to produce the base URI.
// It takes a string rather than an integer.
Uri myPerson = Uri.withAppendedPath(People.CONTENT_URI, "23");
// Then query for this specific record:
Cursor cur = managedQuery(myPerson, null, null, null, null);

Android: 從Content Resolver取得Media (I)

底下節自Android developer並翻譯,
Media player可以詢問 ContentResolver來取得media file

ContentResolver contentResolver = getContentResolver();
Uri uri = android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
Cursor cursor = contentResolver.query(uri, null, null, null, null);
if (cursor == null) {
// query failed, handle error.
} else if (!cursor.moveToFirst()) {
// no media on the device
} else {
int titleColumn = cursor.getColumnIndex(android.provider.MediaStore.Audio.Media.TITLE);
int idColumn = cursor.getColumnIndex(android.provider.MediaStore.Audio.Media._ID);
do {
long thisId = cursor.getLong(idColumn);
String thisTitle = cursor.getString(titleColumn);
// ...process entry...
} while (cursor.moveToNext());
}
那如何使用呢?請看底下程式碼:

2011年9月26日

MyCuber (for Rubik Cube) 我的魔方

Available in Android Market
MyCuber @ Android Market

 MyCuber (Rubik cube3x3)
    • 依據世界方塊協會World Cube Association比賽規則設計模擬比賽情境計時,加上獨特的語音讀秒功能,讓使用者在解魔術方塊的同時,也能得知各階段所花費的時間,以利針對弱點加強練習,另外也可以針對先前解過的亂轉序列,重新再試一次。
    • 針對推廣魔術方塊運動而言,可以取代昂貴的計時裝置,提供方便又有效的計時紀錄工具
    • 畫面配色簡捷強調字幕的數字方便閱讀      

     剛出爐熱騰騰的軟體還在冒煙zZZ..搞了整個晚上終於成功上架了,原來還要等一陣子才會出現在市集,我真是太心急了點,連忙Google了大半夜想搞清楚是哪裡出錯(愛用網路Google的通病:-),百思不解結果休息一會兒就自動OK了,真是天下本無事,庸人自擾之。

2011年9月21日

連結: Android Shapes – Example » Developer Papercuts

Android Shapes – Example » Developer Papercuts:

漸層底圖效果

Android: 使用資源Resource中的顏色和字串

首先在/res/values/目錄底下產生一個xml檔
<?xml version=”1.0″ encoding=”utf-8″?>
<resources>
<string name="title">MyCuber</string>
<color  name=”backcolor”>#006fff</color>
</resources>

Android: 網路是否通?

記得在AndroidManifest.xml加上
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE">
public boolean isNetworkAvailable() {
 ConnectivityManager cm=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
 NetworkInfo networkInfo = cm.getActiveNetworkInfo();
  // if no network is available networkInfo will be null, otherwise check if we are connected
  if (networkInfo != null && networkInfo.isConnected())
        return true;
  return false;
}

Android: 免費圖示icon


http://commons.wikimedia.org/wiki/Crystal_Clear
http://www.famfamfam.com
http://iconlet.com
http://www.iconfinder.net/browse

2011年9月20日

小米手机: 值得期待!

小米手机官网:
應該是便宜(1999元人民幣)又好的手機,對大陸手機越來越有好感。目前手上的是華為的ideos手機,用起來中規中矩的。

处理器高通双核 MSM8260 1.5GHz
网络 GSM/WCDMA
RAM 1GB DDR2 RAM
ROM 4GB
图形处理器Adreno 220
屏幕夏普4寸854*480像素 TFT(半反半透)
相机800万像素、2.4最大光圈、自动对焦+LED
操作系统MIUI—深度定制的Android系统(開放刷機)
机身尺寸125*63*11.9mm
重量149g
电池1930mAh


2011年9月19日

蘇三起解...

還記得小時候 (嗯,是很小很小的時候 : )
聽姊姊唱這段京劇,只覺得此人好慘呀,覺得心中難過,卻又說不上來。
現在我明白了...
一位弱女子在腐敗官僚的嚴刑逼迫下,她的慘只能往心裡忍,也想認命算了,
但心裡最終還是捨不下那日思夜盼的情郎。
那哀怨泣訴無助,願來世作犬馬報答,她是多麼想念他呀,真是令人憐惜不忍。
現在拜網路之賜,可以聽到並看到各種版本的表演,真是Good Go !
唱詞如下:
蘇三離了洪桐縣,將身來在大街前,未曾開言我心內慘,過往的君子聽我言。
哪一位去往南京轉,與我那三郎把信傳。就說蘇三把命斷,來生變犬馬我當報還。
經典版的
底下有年輕版和幼兒版的更是棒...

連結: 臺北市政府公開資料平台

臺北市政府公開資料平台:
底下引自上述網址

data.taipei臺北市政府公開資料平台
臺北市政府為推動開放政府(Open Government)之資料公開政策,整合本府公開資料於單一入口網站以供大眾利用。目前資料目錄包含約130項以上資料集,不僅格式多元且隨時更新,另為提供更佳服務品質,新資料集將持續加入。
我們的目標:
  • 提供政府公開資料更簡易的取得管道
    將資料查詢及使用說明集中於單一入口,以提升資訊服務品質。
  • 提倡政府公開資料加值及應用
    鼓勵個人、企業和組織運用政府公開資料創造知識資產及便民服務,提昇臺北城市友善度。
  • 提高政府施政透明度及效能
    以服務、資料集、統計數據等形式公開資料,營造民眾參與協同合作的資訊基礎環境。

2011年9月17日

連結: OpenCV v2.3 for Android

Using Android binary package with Eclipse — OpenCV v2.3 documentation:

2011年9月11日

Android: OpenGL ES 1.0 範例

OpenGL ES Tutorial for Android – Part I – Setting up the view
Yet Another Tutorial on Android 3D Graphics using OpenGL ES Including Nehe's Port:

Android從1.0開始,就支援Open Graphics Library (OpenGL)移動裝置版 OpenGL ES API 用來進行硬體加速2D和3D圖形處理。從Android 2.2 (API Level 8)開始支援OpenGL ES 2.0 API規格(和J2ME JSR239 OpenGL ES API類似)有兩個基本Class讓你方便使用OpenGL ES API。

GLSurfaceView
  • 類似SurfaceView,像畫布一樣在上面作畫,若想接收觸控訊息時,就實做個touch listener,見範例TouchRotateActivity。@Override public boolean onTouchEvent(MotionEvent e) { ........}
GLSurfaceView.Renderer
     此界面實現了在GLSurface上畫畫的動作,經由setRenderer()設定,必須實現方法:
  • onSurfaceCreated(): 當產生GLSurface時呼叫一次。在這裡執行設定OpenGL環境變數,起始  OpenGL圖形物件等動作。 
  • onDrawFrame(): 每一次GLSurface重畫時呼叫此函數。 
  • onSurfaceChanged(): 當GLSurface改變時呼叫此函數,包含大小、方向等。

2011年9月10日

2011/6/25 Feliks Zemdegs 魔術方塊世界紀錄 5.66 秒

他又破了自己的世界紀錄,真是厲害,用的據說是大雁展翅喔!
5.66秒只夠我愣一下 :)
(2011年6月25日的澳大利亞墨爾本2011冬季公開賽,澳洲Feliks Zemdegs)
底下是慢動作
慢動作
看起來他的作法,基本上是CFOP,但似乎十字和F2L同時做了。
白面在上或黃面在上,看哪一面較容易!
更多教學影片

Android : 應用程式的唯一ID

Android Developers Blog: Identifying App Installations:
該文章建議使用UUID來作註冊號碼,若要與機器相關且唯一,則Android v2.3 版之後可用底下的ANDROID_ID,但之前的v2.2版會抓到同一個數字9774d56d682e549c !!
String android_id =  Settings.Secure.getString(getContentResolver(),        android.provider.Settings.Secure.ANDROID_ID);

本以為呼叫 getLine1Number()就可輕鬆得知手機號碼,實測之後發現只有一片古老的中華電信sim卡,可以抓到手機號碼。上網google一下,才發現手機號碼可能不會存在sim卡中。

2011年9月9日

Android 畫圖表工具: achartengine

achartengine - Charting library for Android - Google Project Hosting: "AChartEngine is a charting library for Android applications. It currently supports the following chart types:

line chart
area chart
scatter chart
time chart
bar chart
pie chart
bubble chart
doughnut chart
range (high-low) bar chart
dial chart / gauge
combined (any combination of line, cubic line, scatter, bar, range bar, bubble) chart
cubic line chart
All the above supported chart types can contain multiple series, can be displayed with the X axis horizontally (default) or vertically and support many other custom features. The charts can be built as a view that can be added to a view group or as an intent, such as it can be used to start an activity.
AChartEngine is currently at the 0.7.0 release. New chart types will be added in the following releases. Please keep sending your feedback such as we can continually improve this library.

Find us on Facebook, too: http://www.facebook.com/achartengine

"

'via Blog this'

2011年9月8日

連結: 使用 ZXing 產生QR碼


条形码/二维码之开源利器ZXing图文介绍 - Michael - ITeye技术网站:
条码扫描二维码扫描——ZXing android 源码简化 - NewObject - 博客园:


遇到有關JAVA的東東,還是不如浸淫許久的高手,一語就可以點破。
還好有各路高手無私的發文,看來JAVA像是Android的內功心法,必須扎實地KK。


連結: How to create and save a screenshot from a SurfaceView on Android Development

How to create and save a screenshot from a SurfaceView on Android Development:

Android: ZXing 使用Intent進行QR碼掃描

Simple access to barcode scanning in Android, via Intents:
ZXing 掃描QR條碼的程式庫

使用Intent呼叫ZXing來掃描QR碼
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.setPackage("com.google.zxing.client.android");
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
startActivityForResult(intent, 0);

接收掃描後結果
public void onActivityResult(int requestCode,int resultCode,Intent it) {
  if (requestCode == 0) {
     if (resultCode == RESULT_OK) {
        String contents = it.getStringExtra("SCAN_RESULT");
        String format = it.getStringExtra("SCAN_RESULT_FORMAT");
       // Handle successful scan
     } else if (resultCode == RESULT_CANCELED) {
      // Handle cancel
     }
  }
}

2011年9月6日

Android: 抓取Webview載入網頁的HTML碼

(出處)lexanderA » Extracting HTML from a WebView:

藉著setWebViewClient設定,當WebView載入網頁後onPageFinished,巧妙地插入JavaScript碼。利用JavaScript的document.getElementsByTagName傳出網頁的HTML原始碼,然後呼叫我們經由addJavascriptInterface掛上的showHTML函數,HTML碼就手到擒來了!

mWebView = (WebView) findViewById(R.id.webview);
WebSettings ws = mWebView.getSettings();
ws.setSavePassword(false);
ws.setSaveFormData(false);
ws.setJavaScriptEnabled(true);
ws.setSupportZoom(false);

mWebView.setWebChromeClient(new MyWebChromeClient());
mWebView.addJavascriptInterface(new DemoJavaScriptInterface(),"HTMLOUT");
mWebView.setWebViewClient(new WebViewClient(){ 
    @Override 
    public void onPageFinished(WebView view, String url)  { 
      mWebView.loadUrl("javascript:window.HTMLOUT.showHTML('<head>'+
     document.getElementsByTagName('html')[0].innerHTML+'</head>');"); 
   } 
}); 

底下就是用AlertDialog顯示網頁上的html碼。

2011年9月5日

轉錄:如何把InputStream變成字串?

(出處: www.kodejava.org)
Learn Java by Examples - How do I convert InputStream to String?:

public String convertStream2String(InputStream is) throws IOException{
 if (is != null) {
   Writer writer = new StringWriter();
   char[] buffer = new char[1024];
   try {
     Reader rr=new BufferedReader(new InputStreamReader(is,"UTF-8"));
     int n;
     while ((n = rr.read(buffer)) != -1) 
             writer.write(buffer, 0, n);
   }finally {
     is.close();
   }
   return writer.toString();
 }else 
  return "";
}

2011年9月3日

TelephonyManager | Android Developers

TelephonyManager | Android Developers:

TelephonyManager tm = (TelephonyManager) getBaseContext().getSystemService(Context.TELEPHONY_SERVICE);
int sim_state = tm.getSimState();

SIM卡的狀態:
int SIM_STATE_UNKNOWN=0                   SIM card state: Unknown."
int SIM_STATE_ABSENT=1                         SIM card state: no SIM card is available in the device
int SIM_STATE_PIN_REQUIRED=2            SIM card state: Locked: requires the user's SIM PIN to unlock
int SIM_STATE_PUK_REQUIRED=3          SIM card state: Locked: requires the user's SIM PUK to unlock
int SIM_STATE_NETWORK_LOCKED=4 SIM card state: Locked: requries a network PIN to unlock
int SIM_STATE_READY=5                          SIM card state: Ready

連結:Managing Android Resources

by Mike Guidry
Android best practices suggest that functionality and the resources supporting that functionality should be as separated as possible. This is typically accomplished by accessing resources when needed within the Java code from external files. Therefore, we need a systematic way to access resources from XML files and from Java code. This appendix outlines the most important issues associated with that management.

連結:APK Piracy: Using private code & resources in Android


by jo.se/f pfleger
Did you know that the Android SDK makes it relatively easy to load code and resources from other apks into your own application? One way is to use a PathClassLoader and point it to an arbitrary APK:
new PathClassLoader("/system/app/Mms.apk", getClassLoader());
Another way is to use createPackageContext and use that context's ClassLoader to instantiate objects and load referenced resources.
( 閱讀全文... ):

連結:Android App Development: Menus Part 3: Alternative Menus | Mobile Orchard

Android App Development: Menus Part 3: Alternative Menus | Mobile Orchard:

by MINA SAMY on 16. MAR, 2011 in ANDROID, TUTORIALS

Android提供Alternative menus,它讓應用程式之間可以互相幫助。此種選項可以指向另一支程式,透過Intent讓它處理此特殊資料型別的物件。
.....