Android開発ノウハウ集合(更新中)

5139 ワード

知っていることをいくつか書いておきますが、
1.タイミングクリーンアップC:Documents and SettingsAndroid 123.下のandroidフォルダ
2.settings----Language&software keyで入力時にソフトキーボードを表示するかどうかの設定ができます
3.コード出力デバッグを行う場合、次のような出力方法があります.
/*異なるロゴ情報を印刷*/
Log.v(TAG, "VERBOSE");
Log.d(TAG, "DEBUG");
Log.i(TAG, "INFO");
Log.w(TAG, "WARN");
Log.e(TAG, "ERROR");

4.Drawableフォルダ関連
リソースファイル名のネーミングには、すべて小文字が必要であり、個別の数値ネーミングはできません.
以前のバージョンではdrawableは1つしかありませんでしたが、2.1バージョンではdrawable-mdpi、drawable-ldpi、drawable-hdpiの3つがあり、これら3つは主にマルチ解像度をサポートするためです.
drawable-hdpi、drawable-mdpi、drawable-ldpiの違い:
(1)drawable-hdpiには、WVGA(480 x 800)、FWVGA(480x 854)などの高解像度の画像が格納されている.
(2)drawable-mdpiにはHVGA(320 x 480)のような中程度の解像度の画像が格納されている
(3)drawable-ldpiにはQVGA(240 x 320)のような低解像度の画像が格納されている
システムは機械の解像度に応じて、これらのフォルダの中に対応する画像を探します.開発プログラムでは、異なるプラットフォームの異なる画面と互換性を持つために、各フォルダに必要に応じて異なるバージョンの画像を保存することをお勧めします.
5.Context文字通りの意味コンテキスト:
framework packageにあるandroid.content.Contextでは、実はこのクラスはLONG型で、Win 32のHandleハンドルのように、多くの方法でContextを通じて呼び出し者のインスタンスを識別する必要があります.例えば、Toastの最初のパラメータはContextです.一般的にActivityでは、呼び出し者を表すインスタンスがActivityであり、buttonのonClick(View view)などの方法になった場合、私たちはthisを使うと間違いを報告するので、Activity Nameを使うかもしれません.これは、Contextを実装するクラスが主にAndroid特有のいくつかのモデル、Activity、Service、BroadcastReceiverを持っているためです.
従来のContextインスタンスを必要とする方法には、主に様々なサービス実装クラスがあります.たとえば、SensorManagerがインスタンス化する際にgetSystemService(String)メソッドを必要とする場合はContextのインスタンスで実行する必要があります.また、openFileInputや一般的なToastのmakeTextメソッドなどのプライベートファイルシステムI/Oもあります.
6.
emulator: ERROR: the user data image is used by another emulator. aborting
このような誤りが現れて私はネット上で調べて、プログラムが正常な関係がないため招いたようで、更に深いレベルの原因について、私もまだはっきりしていないで、もし誰が知っていたら教えて下きます
一時的な処理方法:

adb kill-server
adb devices

7.ウィンドウのフォーマットを半透明にする
 
getWindow().setFormat(PixelFormat.TRANSLUCENT);

8.画面サイズ取得
方法A:

WindowManager windowManager = getWindowManager();
Display display = windowManager.getDefaultDisplay();
hAndW[0] = display.getWidth();
hAndW[1] = display.getHeight();

方法B:

DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
hAndW[0] = dm.widthPixels;
hAndW[1] = dm.heightPixels;

9.取得メモリサイズ
ActivityManager.MemoryInfo outInfo = new ActivityManager.MemoryInfo();
activityManager.getMemoryInfo(outInfo);
//    
outInfo.availMem
//        
outInfo.lowMemory

10.Appインストール/アンインストールイベントのリスニング
A.Define a class derived from class BroadcastReceiver;
B.Register broadcast receiver;
   
MyBroadcastReceiver myReceiver = new MyBroadcastReceiver();
    
    IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_INSTALL);
    filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
    filter.addAction(Intent.ACTION_PACKAGE_ADDED);
    filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
    filter.addAction(Intent.ACTION_PACKAGE_RESTARTED);
    ...
    filter.addDataScheme("package"); //This line is very important. Otherwise, broadcast can't be received.
    registerReceiver(myReceiver, filter);   

11.IPアドレスを取得する
  
 
A.Connect via WIFI
    WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
    WifiInfo wifiInfo = wifiManager.getConnectionInfo();
    int ipAddress = wifiInfo.getIpAddress();

    B.Connect via GPRS
    public String getLocalIpAddress(){
    try{
        for(Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();){
          NetworkInterface intf = en.nextElement();
        for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();){
            InetAddress inetAddress = enumIpAddr.nextElement();
          if (!inetAddress.isLoopbackAddress()){
              return inetAddress.getHostAddress().toString();
          }
        }
      }
    }catch (SocketException ex){
        Log.e(S.TAG, ex.toString());
    }
        return null;
    }

12.Monitor Media Event: mount/unmount..
   A.Define a class derived from class BroadcastReceiver;
   B.Register broadcast receiver;
   
MyBroadcastReceiver myReceiver = new MyBroadcastReceiver();
    
    IntentFilter filter = new IntentFilter(Intent.ACTION_MEDIA_MOUNTED);
    filter.addAction(Intent.ACTION_MEDIA_UNMOUNTED);
    filter.addAction(Intent.ACTION_MEDIA_EJECT);
    ...
    filter.addDataScheme("file"); //This is important. Otherwise, broadcast can't be received
  
    registerReceiver(myReceiver, filter);