SC-02F

Posted by muchag | Android | 2015-02-25 (水) 0:15:09

F-02E を落としてしまい、ケータイ補償サービスでもらった代替機。

【環境】
端末:SC-02F(Galaxy J)
Android:4.4.2
本体情報

SAMSUNG:GALAXY J SC-02F
docomo:GALAXY J SC-02F サポート情報
Wikipedia:SC-02F
 

アプリケーション
アナログ時計

Google play:Simple アナログ時計 [秒針対応ウィジェット]
Google play:シンプルなアナログ時計ウィジェット無料 目覚まし時計アラーム
 

ビューア

Google play:Perfect Viewer
 

ファイラー

Google play:X-plore File Manager
 

ボイスレコーダー

Google play:PCM録音
 

使い方
壁紙

[設定]-[デバイス]-[壁紙] から変更。

Android | 2015-02-25 (水) 0:15:09 |

Address

Posted by muchag | Android | 2012-01-15 (日) 23:16:54

xAL (eXtensible Address Language) という方式に則った簡易住所フォーマット(クラス?)ということらしい。

Android Developers:Address

東京タワー(緯度:35.656749、経度:139.745332)で実験

  1. TextView textview = (TextView)findViewById(R.id.textview);
  2.  
  3. // GeoCoder のインスタンスを生成
  4. Geocoder geocoder = new Geocoder(context, Locale.getDefault());
  5. // 逆ジオコーディングにより、住所候補を取得
  6. List<Address> listAddress = geocoder.getFromLocation(35.656749, 139.745332, 1); // 最後の引数 1 は検索結果数。1~5 で指定
  7.  
  8. if (!listAddress.isEmpty()){
  9.  
  10.     // 最初の変換候補を取得
  11.     Address address = listAddress.get(0);
  12.  
  13.     textview.setText(address.toString());
  14. }

取得結果(見やすく改行してある)

  1. Address[
  2.     addressLines=[
  3.         0:"日本",
  4.         1:"東京都港区芝公園4丁目6-1"
  5.     ],
  6.     feature=1,
  7.     admin=東京都,
  8.     sub-admin=null,
  9.     locality=港区,
  10.     thoroughtfare=4丁目,
  11.     postalCode=null,
  12.     countryCode=jp,
  13.     countryName=日本,
  14.     hasLatitude=true,
  15.     latitude=35.656749,
  16.     hasLongitude=true,
  17.     longitude=139.745332,
  18.     phone=null,
  19.     url=null,
  20.     extras=null
  21. ]

 
これを東京駅(緯度:35.681382、経度:139.766084)で実験すると
以下の結果が返ってくる。

  1. Address[
  2.     addressLines=[
  3.         0:"日本",
  4.         1:"〒100-0005",
  5.         2:"都道407号線"
  6.     ],
  7.     feature=都道407号線,
  8.     admin=null,
  9.     sub-admin=null,
  10.     locality=null,
  11.     thoroughtfare=null,
  12.     postalCode=null,
  13.     countryCode=jp,
  14.     countryName=日本,
  15.     hasLatitude=true,
  16.     latitude=35.681382,
  17.     hasLongitude=true,
  18.     longitude=139.766084,
  19.     phone=null,
  20.     url=null,
  21.     extras=null
  22. ]
Android | 2012-01-15 (日) 23:16:54 |

Web サイトを表示する

Posted by muchag | Android | 2011-07-15 (金) 0:40:19

Android アプリの中で Web サイトを表示する手法。

【環境】
[Android SDK Tools] revision 12
[API Level] 4
[デバッグ実機] Xperia arc
AndroidManifest.xml
AndroidManifest.xml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest
  3.     xmlns:android="http://schemas.android.com/apk/res/android"
  4.     package="com.sample"
  5.     android:versionCode="1"
  6.     android:versionName="1.0">
  7.  
  8.     <uses-sdk android:minSdkVersion="4" />
  9.  
  10.     <application android:icon="@drawable/icon" android:label="@string/app_name">
  11.         <activity android:name=".WebTestActivity"
  12.                   android:label="@string/app_name">
  13.             <intent-filter>
  14.                 <action android:name="android.intent.action.MAIN" />
  15.                 <category android:name="android.intent.category.LAUNCHER" />
  16.             </intent-filter>
  17.         </activity>
  18.  
  19.     </application>
  20.  
  21. +   <uses-permission android:name="android.permission.INTERNET"></uses-permission>
  22. </manifest>

 

XML ファイルを利用する場合
WebTest.java
  1. package com.sample;
  2.  
  3. import android.app.Activity;
  4. import android.os.Bundle;
  5. import android.webkit.WebView;
  6. import android.webkit.WebViewClient;
  7.  
  8. public class WebTestActivity extends Activity {
  9.     /** Called when the activity is first created. */
  10.     @Override
  11.     public void onCreate(Bundle savedInstanceState) {
  12.         super.onCreate(savedInstanceState);
  13.         setContentView(R.layout.main);
  14.  
  15. +       WebView webview = (WebView)findViewById(R.id.myWebView);
  16. +       webview.loadUrl("http://www.example.com/test.php");
  17.     }
  18. }
main.xml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     android:orientation="vertical"
  4.     android:layout_width="fill_parent"
  5.     android:layout_height="fill_parent"
  6.     >
  7.  
  8. +   <WebView android:id="@+id/myWebView"
  9. +       android:layout_width="fill_parent"
  10. +       android:layout_height="fill_parent"
  11. +       />
  12. </LinearLayout>

 

XML ファイルを利用しない場合
  1. package com.sample;
  2.  
  3. import android.app.Activity;
  4. import android.os.Bundle;
  5. import android.webkit.WebView;
  6. import android.webkit.WebViewClient;
  7.  
  8. public class WebTestActivity extends Activity {
  9.     /** Called when the activity is first created. */
  10.     @Override
  11.     public void onCreate(Bundle savedInstanceState) {
  12.         super.onCreate(savedInstanceState);
  13.  
  14. +       WebView webview = new WebView(this);
  15. +       webview.loadUrl("http://www.yahoo.co.jp");
  16. +       setContentView(webview);
  17.     }
  18. }

 

WebViewClient

Android Developers:WebViewClient

何も勉強してないので、正しい用途はわからないけど
名前からして「ブラウザ」のような役割をするのかしら。

まぁ、事実実験結果もそんな感じだった。
 

WebViewClient なし

前述のサンプルコードは WebViewClient なし。
 
先ずアクティビティが起動して
(←マッチロだけど画像あり)

 
それからブラウザが起動するような動き。

左の画面では最初のうち読み込みプログレスバーも出る。

「戻る」ボタンで、元の真っ白なアクティビティに戻る。

 

WebViewClient あり
  1. package com.sample;
  2.  
  3. import android.app.Activity;
  4. import android.os.Bundle;
  5. import android.webkit.WebView;
  6. import android.webkit.WebViewClient;
  7.  
  8. public class WebTestActivity extends Activity {
  9.     /** Called when the activity is first created. */
  10.     @Override
  11.     public void onCreate(Bundle savedInstanceState) {
  12.         super.onCreate(savedInstanceState);
  13.  
  14.         WebView webview = new WebView(this);
  15. +       webview.setWebViewClient(new WebViewClient());
  16.         webview.loadUrl("http://www.yahoo.co.jp");
  17.         setContentView(webview);
  18.     }
  19. }

 
起動と同時に Web サイトが表示される。

 

差異

2段階 or 1段階以外にも、JavaScript の有効無効の差も出ている。

タイトルバー

「WebViewClient なし」では、Yahoo の表示画面にタイトルバーがないことを見ても
Web サイトを表示している画面では、既にアプリの手を離れているようだ。
 

JavaScript

私の実機「Xperia arc」の「ブラウザ」は
「JavaScript を有効」にしているので
「WebViewClient なし」では JavaScript に関するコメントは出ていない。

JavaScript を有効にするには

  1. webview.getSettings().setJavaScriptEnabled(true);

参考元サイト:Webブラウザビューチュートリアル

Android | 2011-07-15 (金) 0:40:19 |

Web サイト表示エラー

Posted by muchag | Android | 2011-07-14 (木) 10:23:54

Android で Web ページを表示しようとした際に起きたエラー。

サッパリ意味不明・・・。

【環境】
[Android SDK Tools] revision 12
[API Level] 4
[デバッグ実機] Xperia arc
症状
test.html
  1. <!doctype html>
  2. <html lang="ja">
  3. <head>
  4.     <meta charset="utf-8" />
  5.     <title>test</title>
  6. </head>
  7.  
  8. <body>
  9. test
  10. </body>
  11. </html>

このコードのファイルを表示しようとしただけなのだが
 

This page contains the following erros:
error on line 1 at column 2: StartTag: invalid element name
Below is a rendering of the page up to the first error.

というエラーメッセージが実機上に表示された。
 

模索
解読

内容だけ読むと
「1行目2文字目がおかしいよ」
「そんな名前のタグは知らないねぇ」
だと思うのだが。

1行目の2文字目って ! ・・・。
 

グーグル先生

グーグル先生に聞いても、ASP.net の話題が多く
さすがの先生も歯切れが悪い。

それでもせっかくの情報なので ASP.net の解決法などを読みながら
あれこれ試してみたけど、サッパリ。
 

解決?
正常ページとの比較

それでも、既存のちゃんと表示されているページと見比べてみて
あれこれ試すこと1時間。

ん?
え?
まさか?

前述のコードのファイル名は「test.html」
既存のちゃんと表示されるページのファイル名は「index.php」
・・・。
 

解決?

藁にもすがる思いで
ファイル名を「test.php」にしてみると
何とちゃんと表示された。

なんじゃこりゃ~!!!

これが本当に解決なのかどうかは不明だけど
一応メモ。

Android | 2011-07-14 (木) 10:23:54 |

リンク集

Posted by muchag | Android | 2011-07-13 (水) 13:46:27

Android 開発に関するリンク集のメモ。

もとまか日記Z:私が参考にしたAndroidアプリ開発情報をまとめてみました

Android | 2011-07-13 (水) 13:46:27 |

YouTube 動画を表示する

Posted by muchag | Android | 2011-07-07 (木) 17:30:18

YouTube の動画をスマートフォンで見たくなって
アプリを製作してみた。

【環境】
[Android SDK] revision 11

グーグル先生に質問してみたら
そのものズバリが出てきた。
自転車で通勤しましょ♪ブログ:明示的IntentでYouTube動画を再生する方法

以下のソースは変数名・YouTube ID (?) 以外、上記サイトの丸パクリです。。。

  1. // YouTube ID (?) の設定
  2. String myYouTube = "IfCfzz-7sHo"; // Android 2.3搭載大画面マルチタッチシステム #DigInfo
  3.  
  4. // 暗黙のインテントの生成
  5. Intent intentYouTube = new Intent(Intent.ACTION_VIEW);
  6.  
  7. // 暗黙のインテント用のデータを設定
  8. intentYouTube.setData(Uri.parse("http://m.youtube.com/watch?v=" + myYouTube));
  9.  
  10. // ここで「暗黙」から「明示的」に変更?
  11. intentYouTube.setClassName("com.google.android.youtube", "com.google.android.youtube.WatchActivity");
  12.  
  13. // アクティビティの呼び出し
  14. startActivity(intentYouTube);

 
無事に YouTube を表示できた。
先輩に感謝♪
 
それにしても「明示的」「暗黙」どっちなんだろう・・・。

Android | 2011-07-07 (木) 17:30:18 |

AVD のエラー

Posted by muchag | Android | 2011-07-06 (水) 14:54:17

新規にプロジェクトを始め
さて、ちょこっとデバッグしてみようかな と思って
デバッグを実行したらコンソールが真っ赤っか・・・。

java.lang.NullPointerException
at com.android.ddmlib.Client.sendAndConsume(Client.java:572)
at com.android.ddmlib.HandleHello.sendHELO(HandleHello.java:142)
at com.android.ddmlib.HandleHello.sendHelloCommands(HandleHello.java:65)
at com.android.ddmlib.Client.getJdwpPacket(Client.java:671)
at com.android.ddmlib.MonitorThread.processClientActivity(MonitorThread.java:317)
at com.android.ddmlib.MonitorThread.run(MonitorThread.java:263)

 
<原因>
AVD のエラーらしい。
 
<対処法>

エミュレータ上の過去全ての自作データだけでなく
エミュレータに施した設定(たとえば日本語表示)も消えるので
それは覚悟して作業

エミュレータを終了
 ↓
Eclipse を再起動
 ↓
[ウィンドウ]-[Android SDK および AVD マネージャー]
から出てくるダイアログで
① 左ペインの「Virtual devices」を選択
② 右ペインの当該 AVD を選択
③ 右中央の「開始」をクリック

 ↓
次のダイアログで
「Wipe user data」にチェック。
で「起動」

 
これで無事に普通に稼動した。
 
参考元サイト:Stack Overflow How to troubleshoot a NullPointerException on Android?

Android | 2011-07-06 (水) 14:54:17 |

e3roid

Posted by muchag | Android | 2011-05-04 (水) 2:01:51

Android でいろいろやるよ!
2Dゲーム用フレームワークを作ってみました。
2Dゲーム用フレームワーク公開しました

MOONGIFT:Androidで2Dゲームを開発するなら「e3roid」

Android | 2011-05-04 (水) 2:01:51 |

draw9patch.bat

Posted by muchag | Android | 2011-05-03 (火) 23:06:09

9-patch とは
ボタン等の背景画像を中のコンテンツに合うように
Android が計算して拡大してくれるもの。
縮小には対応していない。

Photoshop を利用する方法

9Patch

draw9patch.bat を利用する方法

HTML でよく利用する飾り枠のイメージ。

①,③,⑦,⑨の四隅にはコーナー画像を配置し
②,④,⑥,⑧の四辺には罫線画像。
罫線画像は⑤に入るコンテンツのサイズに合わせて繰り返してくれる。

記事毎に飾り枠を付けているブログなんかもこの方式のはず。

これを自動でやってくれるのが 9-patch 。
但し、それには以下のような準備が必要。
 

Android/android-sdk-windows/tools/draw9patch.bat

これを起動すると

 
こんな画面になるので

 
[File]-[Open 9-patch…] から
用意した素材ファイルを開く。

 
開くとこんな感じの画面。
右ペインはプレビュー。

用意していた素材ファイルの外周に1ピクセル分追加されている。
この1ピクセルの幅のところに、マウスで印を付けていく。

左クリックで黒い印が付く。
黒い印を右クリックすると印が消える。

 
左辺と上辺の黒い印により
前述の9マスの仕切りとなる。

画面下部の「Show patches」にチェックを入れてやると
黒い印に合わせて9分割されていることがよくわかる。

 
右辺と下辺の黒い印により
中に配置するコンテンツの領域を設定する。

画面下部の「Show content」にチェックを入れてやると
右ペインのプレビューにコンテンツ領域が表示される。

 
以上、私自身はここまで試してみたが
もっとたくさん研究しておられる方のサイトを発見したのでメモ。
明日の鍵:9patchを覚えよう!
 

起動しない

私の環境では残念ながら最初は draw9patch.bat が起動しなかった。
ダブルクリックをすると
左図のような画面が出て、すぐ消えてしまう。

 
で、グーグル先生に質問をしたところ
解決策が載っていた。
Android draw9patch throws NoClassDefFoundError

上記リンク先の Answer にある通り

swing-worker-1.1.jar

を DL して

Android\android-sdk-windows\tools\lib

に入れたら、無事に起動した。
 

参考サイト

TechBooster:チュートリアル:9patchで画像を作る
アシアルブログ:AndroidにおけるLauncherアイコン、背景画像の作り方

Android | 2011-05-03 (火) 23:06:09 |

プロジェクト -> インポート

Posted by muchag | Android | 2011-04-26 (火) 14:16:45

既存のプロジェクトを
Eclipse へインポートする手法。

[ファイル]-[インポート] から

 
「既存のプロジェクトをワークスペースへ」を選択して
次へ。

 
プロジェクトフォルダが存在する場合は
「ルート・ディレクトリーの選択」->「参照」

プロジェクトの圧縮ファイル(.zip)が存在する場合は
「アーカイブ・ファイルの選択」->「参照」

で、当該ディレクトリなりファイルを指定する。

 
「ルート・ディレクトリーの選択」の場合、指定するフォルダは
「.project」ファイルがあるフォルダ、とも
「AndroidManifest.xml」があるフォルダ、とも書かれているが
Android の場合は結果的には同じことのようだ。

ただ、Eclipse の使い方で考えたら
「.project」ファイルがあるフォルダ、が正しい気がする。

 
というようりも、そもそもディレクトリを指定すると
それ以下のプロジェクトを全部拾ってくれる仕組みになっている。

複数ある場合は、必要なものだけをチェックすればよいわけで
あまり深く考える必要はなさそうだ。

Android | 2011-04-26 (火) 14:16:45 |
次ページへ »