2013年1月15日 星期二

(Android Note) 驗證是否有網路連線


1. code 

//判斷當前網路連接狀態  、0 無連接 、1 3G、2 WIFI
public static int checkNetworkInfo(Context context){
  int stateType = 0;
ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
State mobile = 
cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState(); //取得3G連線狀態
State wifi = 
cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState(); //取得WIFI連線狀態
if (mobile == State.CONNECTED || mobile == State.CONNECTING){
stateType = 1;
}
if (wifi == State.CONNECTED || wifi == State.CONNECTING){
stateType = 2;
}
return stateType;
}


    *AndroidManifest 開啟權限

  • <uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE" /> //訪問存取網路狀態許可權限
  • <uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE" /> //訪問存取wifi狀態許可權限
  • <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" /> //訪問存取手機狀態許可權限




(Android Note) AlertDialog.Builder

1. Code

final AlertDialog.Builder builder=new AlertDialog.Builder(this);
builder.setTitle(" Test ");
builder.setMessage(" Test ");
builder.setIcon(android.R.drawable.ic_dialog_alert);

//3種事件處理方式
builder.setPositiveButton("OK", new OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {

    }
});

builder.setNegativeButton("Cancel", new OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
    // TODO Auto-generated method stub

    }
});

builder.setNeutralButton("other things", new OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
    // TODO Auto-generated method stub

    }
});

builder.show();

2013年1月3日 星期四

(Android Note) 內部和外部儲存空間大小

1. Code

(1) sdcard 是否存在


android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
return true; //存在
return false; //不存在

(2) 內部儲存空間


File path = android.os.Environment.getDataDirectory();
StatFs sf = new StatFs(path.getPath());
long bs = sf.getBlockSize();
long ab = stat.getAvailableBlocks();
long bc = stat.getBlockCount();

retrun bs*ab; //剩餘儲存空間
retrun bs*bc; //總儲存空間

(3) sdcard儲存空間


File path = android.os.Environment.getExternalStorageDirectory();
StatFs sf = new StatFs(path.getPath());
long bs = sf.getBlockSize();
long ab = stat.getAvailableBlocks();
long bc = stat.getBlockCount();

retrun bs*ab; //剩餘儲存空間
retrun bs*bc; //總儲存空間


2. 說明

bs(block size),在fat32檔案系統, block size是 4096 byte,其他可以用getBlockSize()來找出block size 大小。




2012年12月12日 星期三

(Android Note) 畫面横屏OR值屏

1. code
  •  setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//畫面直向
  • setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//畫面橫向
以上畫面只要轉方向時,activity 會重新執行。

  • 如果不要 activity 重新執行,需要在 AndroidManifest.xml 檔案中,在 activity 加入 android:configChanges="orientation|keyboardHidden" 就會禁止重新執行。

2012年11月22日 星期四

(Android Note) webview 字體設定

1. code

(1) 卷軸設定 


WebView.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY); 
WebView.setHorizontalScrollBarEnabled(false); //橫軸
WebView.setVerticalScrollBarEnabled(false); //縱軸

(2)字體 

WebView.getSettings().setDefaultFontSize(value); //value 數值

 OR

WebView.getSettings().setTextSize(WebSettings.TextSize.Normal); //TextSize只有5種設定方式(Smallest、Smaller、Normal、Larger、Largest)

2012年11月15日 星期四

(Android Note) 圖片依照螢幕節析度自動調整

1. Introduction

(1) 有時用bitmap會發覺內存溢出導致error,主要是圖片太大才會發生此情況,以下code  可以解決內存溢出問題。
(2)目前android mobile device太多不同的節析度,此code 為了讓圖片可以依照節析度自行縮放。

2. Code

changePictureWH(讀取圖檔, 元件);//getResources().openRawResource(R.drawable.X), 元件


public void changePictureWH(InputStream resources, ImageButton id) { 
     Bitmap bmp;
     BitmapFactory.Options bfo = new BitmapFactory.Options();
    bfo.inJustDecodeBounds = true; //不分配空間
    bmp = BitmapFactory.decodeStream(resources,null,bfo);
    int picWidth  = bfo.outWidth;  //圖片寬度
    int picHeight = bfo.outHeight; //圖片長度
    int screenWidth = Define_Variable.scalWidth; //螢幕寬度  
    int screenHeight = Define_Variable.scalHeight;  //螢幕長度
    bfo.inSampleSize = 1;  //isSampleSize 指圖片縮放程度 = 100/isSampleSize, 值越大圖越小 
    //根據螢幕的大小和圖片大小計算比例
    if(picWidth > picHeight){  
    if(picWidth > screenWidth)  bfo.inSampleSize = picWidth/screenWidth;  
    }else{  
    if(picHeight > screenHeight)  bfo.inSampleSize = picHeight/screenHeight;  
    }  
   //產生經過縮放有像素的bitmap
    bfo.inJustDecodeBounds = false;  //從新分配空間
    bmp = BitmapFactory.decodeStream(resources,null,bfo); 
    id.setImageBitmap(bmp);
    }

(Android Note) 自動觸發事件

1. code

view.performClick(); //view定義的元件, performClick()自動觸發click事件