2011/04/27 0 コメント

Android - プログラムでLinearLayoutのGravity属性を設定

LinearLayoutそのものを中央寄せしたい場合は, 以下のように LayoutParams の gravity 変数に値を設定すれば良い。

  1. LinearLayout.LayoutParams lp =  
  2.     new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,  
  3.                                   LinearLayout.LayoutParams.WRAP_CONTENT);  
  4. lp.gravity = Gravity.CENTER_HORIZONTAL;   
  5. view.setLayoutParams(lp);  


view.setGravity(gravity); で設定しようとしてはまったのでメモ。
LinearLayout の小ビューの中央寄せはをする場合に, view.setGravity(gravity); を使うのかな?
2011/04/27 0 コメント

Android - 画面の横幅と縦幅の取得

画面の横幅と縦幅を取得したい場合は以下の様にすれば良い

  1. DisplayMetrics metrics = new DisplayMetrics();  
  2. getWindowManager().getDefaultDisplay().getMetrics(metrics);  
  3. int width = metrics.widthPixels;  // 横幅サイズを取得  
  4. int height = metrics.heightPixels;  // 縦幅サイズを取得  

ちなみに, 幅が小さいほうが横幅, 大きいほうが縦幅というわけではなく, その時の画面の向きに対する横幅・縦幅です。
2011/04/20 0 コメント

MINE TYPE の一覧 (cakePHPより)

cakePHP1.3のmedia.phpで定義されているMINEタイプの一覧は以下のものとなっていた。
しっておくと便利かもしれないので、一応メモ!

  1. var $mimeType = array(  
  2.     'ai' => 'application/postscript',  
  3.     'bcpio' => 'application/x-bcpio',  
  4.     'bin' => 'application/octet-stream',  
  5.     'ccad' => 'application/clariscad',  
  6.     'cdf' => 'application/x-netcdf',  
  7.     'class' => 'application/octet-stream',  
  8.     'cpio' => 'application/x-cpio',  
  9.     'cpt' => 'application/mac-compactpro',  
  10.     'csh' => 'application/x-csh',  
  11.     'csv' => 'application/csv',  
  12.     'dcr' => 'application/x-director',  
  13.     'dir' => 'application/x-director',  
  14.     'dms' => 'application/octet-stream',  
  15.     'doc' => 'application/msword',  
  16.     'drw' => 'application/drafting',  
  17.     'dvi' => 'application/x-dvi',  
  18.     'dwg' => 'application/acad',  
  19.     'dxf' => 'application/dxf',  
  20.     'dxr' => 'application/x-director',  
  21.     'eot' => 'application/vnd.ms-fontobject',  
  22.     'eps' => 'application/postscript',  
  23.     'exe' => 'application/octet-stream',  
  24.     'ez' => 'application/andrew-inset',  
  25.     'flv' => 'video/x-flv',  
  26.     'gtar' => 'application/x-gtar',  
  27.     'gz' => 'application/x-gzip',  
  28.     'bz2' => 'application/x-bzip',  
  29.     '7z' => 'application/x-7z-compressed',  
  30.     'hdf' => 'application/x-hdf',  
  31.     'hqx' => 'application/mac-binhex40',  
  32.     'ico' => 'image/vnd.microsoft.icon',  
  33.     'ips' => 'application/x-ipscript',  
  34.     'ipx' => 'application/x-ipix',  
  35.     'js' => 'application/x-javascript',  
  36.     'latex' => 'application/x-latex',  
  37.     'lha' => 'application/octet-stream',  
  38.     'lsp' => 'application/x-lisp',  
  39.     'lzh' => 'application/octet-stream',  
  40.     'man' => 'application/x-troff-man',  
  41.     'me' => 'application/x-troff-me',  
  42.     'mif' => 'application/vnd.mif',  
  43.     'ms' => 'application/x-troff-ms',  
  44.     'nc' => 'application/x-netcdf',  
  45.     'oda' => 'application/oda',  
  46.     'otf' => 'font/otf',  
  47.     'pdf' => 'application/pdf',  
  48.     'pgn' => 'application/x-chess-pgn',  
  49.     'pot' => 'application/mspowerpoint',  
  50.     'pps' => 'application/mspowerpoint',  
  51.     'ppt' => 'application/mspowerpoint',  
  52.     'ppz' => 'application/mspowerpoint',  
  53.     'pre' => 'application/x-freelance',  
  54.     'prt' => 'application/pro_eng',  
  55.     'ps' => 'application/postscript',  
  56.     'roff' => 'application/x-troff',  
  57.     'scm' => 'application/x-lotusscreencam',  
  58.     'set' => 'application/set',  
  59.     'sh' => 'application/x-sh',  
  60.     'shar' => 'application/x-shar',  
  61.     'sit' => 'application/x-stuffit',  
  62.     'skd' => 'application/x-koan',  
  63.     'skm' => 'application/x-koan',  
  64.     'skp' => 'application/x-koan',  
  65.     'skt' => 'application/x-koan',  
  66.     'smi' => 'application/smil',  
  67.     'smil' => 'application/smil',  
  68.     'sol' => 'application/solids',  
  69.     'spl' => 'application/x-futuresplash',  
  70.     'src' => 'application/x-wais-source',  
  71.     'step' => 'application/STEP',  
  72.     'stl' => 'application/SLA',  
  73.     'stp' => 'application/STEP',  
  74.     'sv4cpio' => 'application/x-sv4cpio',  
  75.     'sv4crc' => 'application/x-sv4crc',  
  76.     'svg' => 'image/svg+xml',  
  77.     'svgz' => 'image/svg+xml',  
  78.     'swf' => 'application/x-shockwave-flash',  
  79.     't' => 'application/x-troff',  
  80.     'tar' => 'application/x-tar',  
  81.     'tcl' => 'application/x-tcl',  
  82.     'tex' => 'application/x-tex',  
  83.     'texi' => 'application/x-texinfo',  
  84.     'texinfo' => 'application/x-texinfo',  
  85.     'tr' => 'application/x-troff',  
  86.     'tsp' => 'application/dsptype',  
  87.     'ttf' => 'font/ttf',  
  88.     'unv' => 'application/i-deas',  
  89.     'ustar' => 'application/x-ustar',  
  90.     'vcd' => 'application/x-cdlink',  
  91.     'vda' => 'application/vda',  
  92.     'xlc' => 'application/vnd.ms-excel',  
  93.     'xll' => 'application/vnd.ms-excel',  
  94.     'xlm' => 'application/vnd.ms-excel',  
  95.     'xls' => 'application/vnd.ms-excel',  
  96.     'xlw' => 'application/vnd.ms-excel',  
  97.     'zip' => 'application/zip',  
  98.     'aif' => 'audio/x-aiff',  
  99.     'aifc' => 'audio/x-aiff',  
  100.     'aiff' => 'audio/x-aiff',  
  101.     'au' => 'audio/basic',  
  102.     'kar' => 'audio/midi',  
  103.     'mid' => 'audio/midi',  
  104.     'midi' => 'audio/midi',  
  105.     'mp2' => 'audio/mpeg',  
  106.     'mp3' => 'audio/mpeg',  
  107.     'mpga' => 'audio/mpeg',  
  108.     'ra' => 'audio/x-realaudio',  
  109.     'ram' => 'audio/x-pn-realaudio',  
  110.     'rm' => 'audio/x-pn-realaudio',  
  111.     'rpm' => 'audio/x-pn-realaudio-plugin',  
  112.     'snd' => 'audio/basic',  
  113.     'tsi' => 'audio/TSP-audio',  
  114.     'wav' => 'audio/x-wav',  
  115.     'asc' => 'text/plain',  
  116.     'c' => 'text/plain',  
  117.     'cc' => 'text/plain',  
  118.     'css' => 'text/css',  
  119.     'etx' => 'text/x-setext',  
  120.     'f' => 'text/plain',  
  121.     'f90' => 'text/plain',  
  122.     'h' => 'text/plain',  
  123.     'hh' => 'text/plain',  
  124.     'htm' => 'text/html',  
  125.     'html' => 'text/html',  
  126.     'm' => 'text/plain',  
  127.     'rtf' => 'text/rtf',  
  128.     'rtx' => 'text/richtext',  
  129.     'sgm' => 'text/sgml',  
  130.     'sgml' => 'text/sgml',  
  131.     'tsv' => 'text/tab-separated-values',  
  132.     'tpl' => 'text/template',  
  133.     'txt' => 'text/plain',  
  134.     'xml' => 'text/xml',  
  135.     'avi' => 'video/x-msvideo',  
  136.     'fli' => 'video/x-fli',  
  137.     'mov' => 'video/quicktime',  
  138.     'movie' => 'video/x-sgi-movie',  
  139.     'mpe' => 'video/mpeg',  
  140.     'mpeg' => 'video/mpeg',  
  141.     'mpg' => 'video/mpeg',  
  142.     'qt' => 'video/quicktime',  
  143.     'viv' => 'video/vnd.vivo',  
  144.     'vivo' => 'video/vnd.vivo',  
  145.     'gif' => 'image/gif',  
  146.     'ief' => 'image/ief',  
  147.     'jpe' => 'image/jpeg',  
  148.     'jpeg' => 'image/jpeg',  
  149.     'jpg' => 'image/jpeg',  
  150.     'pbm' => 'image/x-portable-bitmap',  
  151.     'pgm' => 'image/x-portable-graymap',  
  152.     'png' => 'image/png',  
  153.     'pnm' => 'image/x-portable-anymap',  
  154.     'ppm' => 'image/x-portable-pixmap',  
  155.     'ras' => 'image/cmu-raster',  
  156.     'rgb' => 'image/x-rgb',  
  157.     'tif' => 'image/tiff',  
  158.     'tiff' => 'image/tiff',  
  159.     'xbm' => 'image/x-xbitmap',  
  160.     'xpm' => 'image/x-xpixmap',  
  161.     'xwd' => 'image/x-xwindowdump',  
  162.     'ice' => 'x-conference/x-cooltalk',  
  163.     'iges' => 'model/iges',  
  164.     'igs' => 'model/iges',  
  165.     'mesh' => 'model/mesh',  
  166.     'msh' => 'model/mesh',  
  167.     'silo' => 'model/mesh',  
  168.     'vrml' => 'model/vrml',  
  169.     'wrl' => 'model/vrml',  
  170.     'mime' => 'www/mime',  
  171.     'pdb' => 'chemical/x-pdb',  
  172.     'xyz' => 'chemical/x-pdb'  
  173. );  
2011/04/18 0 コメント

Android - HTTP-POST通信を行う

HTTPのPOST処理を行う場合は, 以下のようにすればOK.

  1. /** 
  2.  * HTTP POSTを行う 
  3.  * 
  4.  * @param url HTTP通信を行うターゲットのURL 
  5.  * @param requestParams パラメータ 
  6.  * @param encode HTTP要求時の文字コード 
  7.  * @return 受信結果の文字列 
  8.  */  
  9. public String httpPostRequest( String url, Map<String, String> requestParams, String encode ){  
  10.  try{          
  11.   HttpPost httppost = new HttpPost( url );  
  12.      DefaultHttpClient client = new DefaultHttpClient();  
  13.    
  14.      // リクエストパラメータの設定  
  15.         List<NameValuePair> params = new ArrayList<NameValuePair>();  
  16.         for (Map.Entry<String, String> entry : requestParams.entrySet()) {  
  17.             params.add(new BasicNameValuePair((String) entry.getKey(), (String) entry.getValue()));  
  18.         }  
  19.    
  20.      // POST データの設定  
  21.      httppost.setEntity(new UrlEncodedFormEntity(params, encode));  
  22.   
  23.      HttpResponse response = client.execute( httppost );  
  24.      int status = response.getStatusLine().getStatusCode();  
  25.    
  26.      // 結果が正しく帰って来なければエラー  
  27.      if ( status != HttpStatus.SC_OK ){ throw new Exception( "" ); }  
  28.    
  29.      return EntityUtils.toString( response.getEntity());  
  30.  }catch ( Exception e ){  
  31.   return null;  
  32.  }  
  33. }  


POST データを付加する際,
httppost.setEntity(new UrlEncodedFormEntity(params, encode));
とするが, ここで第二引数に, ちゃんと encode を指定してあげること。
内部エンコードがUTF-8だろうからって指定しなかったために、えらい目に会いました。

Webプログラム (PHP等) でもそうだけど、文字コードは明示的にちゃんと指定してあげなきゃだめですね。猛省。。。
2011/04/07 0 コメント

動作しているサービスの一覧について

動作しているサービスの一覧は,


chkconfig --list というコマンドで把握できる。出力例は以下



NetworkManager 0:off 1:off 2:off 3:off 4:off 5:off 6:off
acpid           0:off 1:off 2:on 3:on 4:on 5:on 6:off
anacron         0:off 1:off 2:off 3:off 4:off 5:off 6:off
atd             0:off 1:off 2:off 3:on 4:on 5:on 6:off
auditd         0:off 1:off 2:off 3:off 4:off 5:off 6:off
     :
     :
wpa_supplicant 0:off 1:off 2:off 3:off 4:off 5:off 6:off
xfs             0:off 1:off 2:off 3:off 4:off 5:off 6:off
ypbind         0:off 1:off 2:off 3:off 4:off 5:off 6:off
yum-updatesd   0:off 1:off 2:off 3:off 4:off 5:off 6:off


ここで 0 ~ 6 の数字はランレベルを表しており,


0 : システムの停止
1 : シングルユーザーモード
2 : マルチユーザーモード(NFSなし)
3 : マルチユーザーモード(テキストログイン)
4 : 未使用
5 : マルチユーザーモード(グラフィカルログイン)
6 : システムの再起動

である。ちなみに,  ランレベルについては こちら

2011/04/05 0 コメント

Android - 画面の向きの固定方法

画面の向きを固定したい!という場合があると思います。
その場合は, 以下の様にすれば良い。

  1. // 画面の向きを固定  
  2. public void fixDisplayOrientation(){  
  3.     Configuration config = getResources().getConfiguration();  
  4.     if(config.orientation == Configuration.ORIENTATION_PORTRAIT){  
  5.         setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);  
  6.     }else if (config.orientation == Configuration.ORIENTATION_LANDSCAPE){  
  7.         setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);  
  8.     }  
  9. }  
  10.   
  11. // 画面の向きの固定を解除  
  12. public void unfixDisplayOrientation(){  
  13.     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);  
  14. }  

ここで, 画面の向きを取得するとき, config.orientation の値を使用。
Configuration.ORIENTATION_PORTRAIT なのか Configuration.ORIENTATION_LANDSCAPE なのかで判断する。


しかし, 画面の向きを設定するとき, は, setRequestedOrientation(int orientation) に与える引数の値は, Configuration.ORIENTATION_PORTRAIT や Configuration.ORIENTATION_LANDSCAPE ではなく, ActivityInfo.SCREEN_ORIENTATION_PORTRAIT または ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE なので注意!
2011/04/04 0 コメント

Android - IMEの表示/非表示

IMEをプログラムで表示/非表示の切り替えを行いたかったので、その時のメモ。

まずは表示方法から
  1. // 表示方法  
  2. EditText et = (EditText)findViewById(R.id.edittext);  
  3.   
  4. InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);  
  5. imm.showSoftInput(et, InputMethodManager.SHOW_IMPLICIT);  

次に非表示にする方法
  1. // 非表示方法  
  2. imm.hideSoftInputFromWindow(v.getWindowToken(),0);  
  3. InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);  

とりあえずこれで出来ました。
2011/04/01 0 コメント

Android - ローディング画像を表示する

画像読み込み中にローディング画像を表示させたい (クルクル回るやつ)。
この場合, Androidに用意されている ProgressBar を使用すれば良い。(gifアニメーションで実現しようとする場合は, 結構めんどくさそう)

  1. <ProgressBar  
  2.     android:id="@+id/product_image_loading"  
  3.     android:layout_width="wrap_content"  
  4.     android:layout_height="wrap_content"  
  5.     style="?android:attr/progressBarStyle"/>  

これだけでOK。

以下は例, 上から順に, styleは
progressBarStyleSmall
progressBarStyle
progressBarStyleLarge
progressBarStyleHorizontal
です。progressBarStyleHorizontal には, android:indeterminate="true" も指定してある。

 
;