Archive


Category: 來玩Android

  • [Android] getApplication()、getApplicationContext()、getBaseContext()、MainActivity.this、this、getContext()之間的區別

    本文原始出處為 http://blog.csdn.net/guolindonggld/article/details/24243059 getApplication(); getApplicationContext(); getBaseContext(); MainActivity.this; this; getContext(); 要理解這些方法的區別,需要先理解在Android框架中,有兩種類別的Context,分別是Application Context和Activity Context: Application Context:存在于“應用”的整個生命週期,只要應用存在,Application Context就存在,並且是唯一的。當應用被銷毀了,Application Context才被銷毀。 Activity Context:存在於“Activity”的整個生命週期,當onDestroy()執行後,Activity Context也被銷毀。 現在回到問題: 1.getApplication():雖然它返回的是Application物件,但Application類繼承自Context,所以它可以用來提供Application Context; 2.getApplicationContext():返回Application Context; 3.getBaseContext():返回Activity Context; 4.MainActivity.this:表示MainActivity物件,一般用在內部類中指示外面的this,如果在內部類直接用this,指示的是內部類本身。因為MainActivity繼承Activity,而Activity繼承Context,所以它也可以用來提供Activity Contex; 5.this:表示當前物件;當它表示MainActivity時,也可以用來提供Activity Context,原因同上。 6.getContext():這個是View類中提供的方法,在繼承了View的類中才可以調用,返回的是當前View運行在哪個Activity Context中。前面的3個方法可以在Activity中調用。

  • [Android] andorid專案資料夾用途說明

    使用Android Studio開啟一個新專案,它會預設幫你建立幾個資料夾,用處說明如下 manifests  記錄應用程式的細節定義,資料夾裡面會有個AndroidManifest.xml,內容包含套件名稱,元件名稱及權限設定等 java  存放java的程式碼 res     drawable  存放圖及檔案資源     layout  存放使用介面的xml設定,資料夾中有一個activity_main.xml,記載著APP的使用者介面及元件的規劃     mipmap 存放對應各種解析度的圖形,其中ic-launcher.png是APP的桌面圖示     values  存放參數的xml設定,資料夾中有strings.xml記錄字串設定,styles.xml記錄佈景主題設定,colors.xml記錄顏色設定     menu  存放選單資訊 Gradle Scripts  存放Gradle相關檔案,其中build.gradle(Module:app),會記載編譯,最小,目標SDK的版本,應用程式的版本,及package name 而local.properties則記錄著SDK的路徑

  • [Android] Android keyboard(Kye value)(KeyEvent) 的 ASCII對應值

    資料來源 http://jashliao.pixnet.net/blog/post/222652314  https://developer.android.com/reference/android/view/KeyEvent.html Summary Nested classes interface KeyEvent.Callback   class KeyEvent.DispatcherState Use with dispatch(Callback, DispatcherState, Object) for more advanced key dispatching, such as long presses.    Constants int ACTION_DOWN getAction() value: the key has been pressed down. int ACTION_MULTIPLE getAction() value: multiple duplicate key events have occurred in a row, or a complex string is being delivered. int ACTION_UP getAction() value: […]

  • [Android] android擷取鏡頭錄影並利用FFmpeg rtmp輸出Live頻道 sample code

    參考自 https://github.com/vanevery/JavaCV_0.3_stream_test 參考自 https://github.com/bytedeco/javacv/blob/master/samples/RecordActivity.java MainActivity.java package com.example.javacv.stream.test2; import android.app.Activity; import android.content.Context; import android.content.pm.ActivityInfo; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.ImageFormat; import android.graphics.Paint; import android.graphics.RectF; import android.hardware.Camera; import android.hardware.Camera.PreviewCallback; import android.media.AudioFormat; import android.media.AudioRecord; import android.media.MediaRecorder; import android.os.Bundle; import android.os.PowerManager; import android.util.Log; import android.view.KeyEvent; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.LinearLayout; […]

  • [Android] Android多國語言APP的做法及資料夾命名

    在Android Studio的做法是 1.在res按滑鼠右鍵->NEW->Directory ,來新增一個目錄,這個目錄的命就依下面的語系自行選擇. 2.這時你是看不到新命名的目錄,所以Android的下拉選單改設為Packages 3.看到新增的目錄後,在目錄上按滑鼠右鍵->NEW->File ,新增一個檔案叫strings.xml 4.把你要用的字辭新增到這個檔案裡吧. 中文(台灣):values-zh-rTW 中文(中國):values-zh-rCN 中文(香港):values-zh-rHK 英語(美國):values-en-rUS 英語(英國):values-en-rGB 英文(澳大利亞):values-en-rAU 英文(加拿大):values-en-rCA 英文(愛爾蘭):values-en-rIE 英文(印度):values-en-rIN 英文(新西蘭):values-en-rNZ 英文(新加坡):values-en-rSG 英文(南非):values-en-rZA 阿拉伯文(埃及):values-ar-rEG 阿拉伯文(以色列):values-ar-rIL 保加利亞文: values-bg-rBG 加泰羅尼亞文:values-ca-rES 捷克文:values-cs-rCZ 丹麥文:values-da-rDK 德文(奧地利):values-de-rAT 德文(瑞士):values-de-rCH 德文(德國):values-de-rDE 德文(列支敦士登):values-de-rLI 希臘文:values-el-rGR 西班牙文(西班牙):values-es-rES 西班牙文(美國):values-es-rUS 芬蘭文(芬蘭):values-fi-rFI 法文(比利時):values-fr-rBE 法文(加拿大):values-fr-rCA 法文(瑞士):values-fr-rCH 法文(法國):values-fr-rFR 希伯來文:values-iw-rIL 印地文:values-hi-rIN 克羅里亞文:values-hr-rHR 匈牙利文:values-hu-rHU 印度尼西亞文:values-in-rID 意大利文(瑞士):values-it-rCH 意大利文(意大利):values-it-rIT 日文:values-ja-rJP 韓文:values-ko-rKR 立陶宛文:valueslt-rLT 拉脫維亞文:values-lv-rLV 挪威博克馬爾文:values-nb-rNO 荷蘭文(比利時):values-nl-BE 荷蘭文(荷蘭):values-nl-rNL 波蘭文:values-pl-rPL 葡萄牙文(巴西):values-pt-rBR […]

  • [Android] Android中的EditText如何判斷是否為空值

    Android中如果需要與使用者互動或者儲存輸入資料時,通常會用EditText這個元件來達成. 但這就牽扯到了一些問題,如果使用者沒有按照規劃輸入應該輸入的資料時,你的APP要怎麼反應呢?? APP直接中斷跳出是最簡單的,但其實是有一些檢查方法來避免的. 今天我們來做的是最簡單的,判斷輸入欄位是否有填入資料,如果沒有填入就告警,然後什麼也不做,這樣就能避免APP中斷跳出了. 首先,判斷欄位是否為空,使用下面的方法 editText.getText().toString().matches(“”) 你可以把它放在需要檢查的程式裡面,下列是一段檢查的程式碼片段給大家參考, 它主要是判斷editText2及editText3這二個欄位是不是有填入,沒有的話告警,有的話寫入到SQLite裡 if(editText2.getText().toString().matches(“”) || editText3.getText().toString().matches(“”)) {                         Toast toast = Toast.makeText(MainActivity.this, “欄位不能是空白!!”, Toast.LENGTH_LONG);                         toast.show();                     }else{   […]

  • [Android] 將SQLite查詢到的資料顯示在listview上

    lv1 = (ListView)findViewById(R.id.lv1); db = openOrCreateDatabase(“db1.db”,MODE_PRIVATE,null); Cursor cursor = db.rawQuery(“select _id, name, phone from mytable”,null); if (cursor != null && cursor.getCount() >= 0) { SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_2, cursor, new String[]{“name”, “phone”}, new int[]{android.R.id.text1, android.R.id.text2}, 0); lv1.setAdapter(adapter); } 但預設的simple_list_item_2只能放二個欄位,但我有三個欄位要顯示的話,該怎麼辦呢?? 有一個取巧的方法,在SQL的語法上動手腳,範例如下 lv1 = (ListView)findViewById(R.id.lv1); db = openOrCreateDatabase(“db1.db”,MODE_PRIVATE,null); Cursor cursor = db.rawQuery(“select _id, _id||’.’||name sname, phone […]

  • [Android] Android的資料儲存-SQLite的使用

    建立Database SQLiteDatabase db = openOrCreateDatabase(“mydb.db”,MODE_PRIVATE,null); 第二個參數可以用 MODE_PRIVATE MODE_WORLD_READABLE MODE_WORLD_WRITEABLE 刪除Database deleteDatabase(“mydb.db”); 執行SQL指令的方法如下 execSQL() 直接執行SQL指令,包含新增,修改,刪除及table的建立rawQuery() 查詢所有的資料insert() 以ContentValues的方式透過insert()新增資料delete() 刪除資料update) 以ContentValuses的方式透過update()修改資料query() 查詢指定的資料close() 關閉資料庫 execSQL()的使用 SQLiteDatabase db = openOrCreateDatabase(“db1.db”,MODE_PRIVATE,null); //建立table String sqlstr = “create table mytable(_id interger primary key, name text, phone text)”; db.execSQL(sqlstr); //新增資料 String sqlstr = “insert into mytable(_id,name,phone) values(001,’Charles’,’04-12345678′)”; db.execSQL(sqlstr); //修改資料 String sqlstr = “update mytable […]

  • [Android] Android的資料儲存-SDcard的讀寫

    權限的開放,在AndroidManifest.xml加入 <uses-permission android:name=”android.permission.WRITE_EXTERNAL_STORAGE” /> SDcard的寫入 File filename = new File(Environment.getExternalStorageDirectory(), “myfile.txt”); try { FileOutputStream fout = new FileOutputStream(filename); fout.write(“test”.getBytes()); fout.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } SDcard的讀取 try { FileInputStream fin = new FileInputStream(filename); BufferedReader reader = new […]

  • [Android] 顯示SDcard的Path

    MainActivity.java package tw.idv.charleslin74.sdcardreadwritetest; import android.os.Bundle; import android.os.Environment; import android.support.v7.app.AppCompatActivity; import android.widget.TextView; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView showerror = (TextView) findViewById(R.id.showerror); String aaa = Environment.<em>getExternalStorageDirectory</em>().getPath(); showerror.setText(aaa); } } activity_main.xml <RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android” xmlns:tools=”http://schemas.android.com/tools” android:layout_width=”match_parent” android:layout_height=”match_parent” android:paddingLeft=”@dimen/activity_horizontal_margin” android:paddingRight=”@dimen/activity_horizontal_margin” android:paddingTop=”@dimen/activity_vertical_margin” android:paddingBottom=”@dimen/activity_vertical_margin” tools:context=”.MainActivity”> <TextView android:layout_width=”wrap_content” android:layout_height=”wrap_content” android:textAppearance=”?android:attr/textAppearanceLarge” android:text=”Large Text” android:id=”@+id/showerror” […]