2013年1月23日 星期三
Java 使用JDBC存取MySQL
Java 存取資料庫是很常見的一種應用,紀錄一下Java存取 MySQL範例說明 ,這裏使用Connector/J來連接MySQL,所以要先下載Connector/J(http://www.mysql.com/downloads/connector/j/),下載完成後解壓縮,可以得要一個mysql-connector-java-5.1.17-bin.jar就是MySQL的JDBC-Driver了, 接著在Eclipse建立一個Java Project,簡易步驟如下:
2013年1月20日 星期日
[Android]取得相機照片後儲存方法
在開發Android相機應用時,處理照片檔案是必經的過程,首先要面對的相片儲存的位置,依應用程式的需求,可將照片儲存至外部的SDCard裡,或是內部的記憶體(內存)中,這兩種儲存位置的做法不太相同,分別介紹兩種方法。
使用openFileOutput來建立FileOutputStream 。
FileName只要檔名即可,不用完整路徑。
Context.MODE_PRIVATE:代表該檔是私有資料,只能被APP本身存取。如果檔案已存在,會覆蓋原檔。 Context.MODE_APPEND:會檢查檔案是否存在,檔案存在會將內容新增檔案內;如檔案不存在就建立新檔。 Context.MODE_WORLD_READABLE:其它應用程式也可以讀取。如果要在APP中使用 intent.ACTION_SEND,要使用此模式。
Context.MODE_WORLD_WRITEABLE:其它應用程式也可以寫入此檔。 Context.MODE_PRIVATE:代表該檔是私有資料,只能被APP本身存取。如果檔案已存在,會覆蓋原檔。
Context.MODE_APPEND:會檢查檔案是否存在,檔案存在會將內容新增檔案內;如檔案不存在就建立新檔。 Context.MODE_WORLD_READABLE:其它應用程式也可以讀取。如果要在APP中使用 intent.ACTION_SEND,要使用此模式。
Context.MODE_WORLD_WRITEABLE:其它應用程式也可以寫入此檔。
Context.MODE_APPEND:會檢查檔案是否存在,檔案存在會將內容新增檔案內;如檔案不存在就建立新檔。 Context.MODE_WORLD_READABLE:其它應用程式也可以讀取。如果要在APP中使用 intent.ACTION_SEND,要使用此模式。
Context.MODE_WORLD_WRITEABLE:其它應用程式也可以寫入此檔。 Context.MODE_WORLD_READABLE:其它應用程式也可以讀取。如果要在APP中使用 intent.ACTION_SEND,要使用此模式。
Context.MODE_WORLD_WRITEABLE:其它應用程式也可以寫入此檔。 Context.MODE_WORLD_WRITEABLE:其它應用程式也可以寫入此檔。
將Bitnap以80%的壓縮存成JPG檔,用FileOutputStream 方式存入。
儲存至內部記憶體(內存):
以下程式碼是將照片以.JPG檔的形式儲存至內部記憶體中。PictureCallback camJpegCallback = new PictureCallback() { public void onPictureTaken(byte[] data, Camera camera) { // 用來接收壓縮成jpeg格式的影像資料 FileOutputStream outStream = null; try { //儲存在內部記憶體 Bitmap bm =BitmapFactory.decodeByteArray(data, 0, data.length); outStream = openFileOutput("photo.jpg", Context.MODE_PRIVATE); bm.compress(CompressFormat.JPEG, 80, outStream); outStream.flush(); outStream.close(); Toast.makeText(PKActivity.this, "存檔完成!", Toast.LENGTH_SHORT) .show(); Intent intent=new Intent(); intent.setClass(PKActivity.this, PK_ResultActivity.class); startActivity(intent); PKActivity.this.finish(); } catch (IOException e) { Toast.makeText(PKActivity.this, "影像檔儲存錯誤!", Toast.LENGTH_SHORT) .show(); }
程式說明:
Bitmap bm =BitmapFactory.decodeByteArray(data, 0, data.length);
將char[] 轉換成Bitmap 的形式。FileOutputStream outStream = openFileOutput("FileName",MODE_WORLD_READABLE);
使用openFileOutput來建立FileOutputStream 。
FileName只要檔名即可,不用完整路徑。
Context.MODE_PRIVATE:代表該檔是私有資料,只能被APP本身存取。如果檔案已存在,會覆蓋原檔。 Context.MODE_APPEND:會檢查檔案是否存在,檔案存在會將內容新增檔案內;如檔案不存在就建立新檔。 Context.MODE_WORLD_READABLE:其它應用程式也可以讀取。如果要在APP中使用 intent.ACTION_SEND,要使用此模式。
Context.MODE_WORLD_WRITEABLE:其它應用程式也可以寫入此檔。 Context.MODE_PRIVATE:代表該檔是私有資料,只能被APP本身存取。如果檔案已存在,會覆蓋原檔。
Context.MODE_APPEND:會檢查檔案是否存在,檔案存在會將內容新增檔案內;如檔案不存在就建立新檔。 Context.MODE_WORLD_READABLE:其它應用程式也可以讀取。如果要在APP中使用 intent.ACTION_SEND,要使用此模式。
Context.MODE_WORLD_WRITEABLE:其它應用程式也可以寫入此檔。
Context.MODE_APPEND:會檢查檔案是否存在,檔案存在會將內容新增檔案內;如檔案不存在就建立新檔。 Context.MODE_WORLD_READABLE:其它應用程式也可以讀取。如果要在APP中使用 intent.ACTION_SEND,要使用此模式。
Context.MODE_WORLD_WRITEABLE:其它應用程式也可以寫入此檔。 Context.MODE_WORLD_READABLE:其它應用程式也可以讀取。如果要在APP中使用 intent.ACTION_SEND,要使用此模式。
Context.MODE_WORLD_WRITEABLE:其它應用程式也可以寫入此檔。 Context.MODE_WORLD_WRITEABLE:其它應用程式也可以寫入此檔。
bm.compress(CompressFormat.JPEG, 80, outStream);
將Bitnap以80%的壓縮存成JPG檔,用FileOutputStream 方式存入。
儲存至SD卡
PictureCallback camJpegCallback = new PictureCallback() { public void onPictureTaken(byte[] data, Camera camera) { // 用來接收壓縮成jpeg格式的影像資料 FileOutputStream outStream = null; try { //儲存在外部SD outStream = new FileOutputStream("/sdcard/photo.jpg"); outStream.write(data); outStream.close(); Toast.makeText(PKActivity.this, "存檔完成!", Toast.LENGTH_SHORT) .show(); Intent intent=new Intent(); intent.setClass(PKActivity.this, PK_ResultActivity.class); startActivity(intent); PKActivity.this.finish(); } catch (IOException e) { Toast.makeText(PKActivity.this, "影像檔儲存錯誤!", Toast.LENGTH_SHORT) .show(); }
2013年1月17日 星期四
使用AXIS2建立WebService Client
2013年1月16日 星期三
AXIS2 WebService Client存取Server憑證過期解決方法
當Server端的憑證過期,無法直接用Eclipse直接連接https的URL時,可利用瀏覽器將.wsdl檔下載至Local端,再將檔案匯入Eclipse中,使用axis2建立一個WebServiceClient的project,詳細建立步驟。
由於Server憑証過期,Client端要存取Server時會造成錯誤,在axis2中可加入以下程式碼,忽略憑証過期的警告。程式碼如下:
由於Server憑証過期,Client端要存取Server時會造成錯誤,在axis2中可加入以下程式碼,忽略憑証過期的警告。程式碼如下:
public static void trustAllSSL() { TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {} public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {} public X509Certificate[] getAcceptedIssuers() { return null; } } }; HostnameVerifier hostVerify = new HostnameVerifier() { public boolean verify(String hostname, SSLSession session) { return true; } }; try { SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); HttpsURLConnection.setDefaultHostnameVerifier(hostVerify); } catch (Exception e) { e.printStackTrace(); } }
在Client初始化前執行 trustAllSSL(),就可正常存取WebService了。
訂閱:
文章 (Atom)