<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5852923695610045805</id><updated>2024-10-07T13:09:26.959+09:00</updated><title type='text'>iPhone開発者によるAndroidプログラミング</title><subtitle type='html'>C, C++, C#, Objective-C開発者によるAndroidプログラミング日記。</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://technical-android.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://technical-android.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>23</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5852923695610045805.post-5298519096992139447</id><published>2011-04-23T16:16:00.001+09:00</published><updated>2011-04-23T16:45:03.873+09:00</updated><title type='text'>ストリートビューを表示する</title><content type='html'>ストリートビューで任意の場所を表示するには、以下のように指定します。&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // Launch StreetView&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Intent intent = new Intent(&quot;android.intent.action.VIEW&quot;, Uri.parse(&quot;google.streetview:cbll=35.710883,139.796321&amp;amp;cbp=1,0,,45,1&quot;));&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;startActivity(intent);&lt;br /&gt;
&lt;hr /&gt;cbll=に続き、経度、緯度を指定し、cbp=に続けて、1,北からの時計回りの角度,,水平から＋−９０度の角度,1と指定します。</content><link rel='replies' type='application/atom+xml' href='http://technical-android.blogspot.com/feeds/5298519096992139447/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://technical-android.blogspot.com/2011/04/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/5298519096992139447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/5298519096992139447'/><link rel='alternate' type='text/html' href='http://technical-android.blogspot.com/2011/04/blog-post.html' title='ストリートビューを表示する'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5852923695610045805.post-4678057426082497585</id><published>2011-04-23T16:10:00.002+09:00</published><updated>2011-04-23T16:46:25.858+09:00</updated><title type='text'>他のActivityを起動</title><content type='html'>Androidは他のアプリを起動するのに「startActivity」を使います。&lt;br /&gt;
Intentに任意のUriを指定してstartActivityを呼び出せば、それに会わせたアプリが自動的に起動されます。&lt;br /&gt;
&lt;br /&gt;
例えば、以下では電話をかけるアプリを起動します。&lt;br /&gt;
&lt;hr /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // Phone call&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Intent intent = new Intent(&quot;android.intent.action.DIAL&quot;, Uri.parse(&quot;tel:0312345678&quot;));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; startActivity(intent);&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
以下は、ブラウザを起動する例です。&lt;br /&gt;
&lt;hr /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // Launch Browser&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Intent intent = new Intent(&quot;android.intent.action.VIEW&quot;, Uri.parse(&quot;http://www.google.com&quot;));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; startActivity(intent);&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
以下は、地図を表示する例です。&lt;br /&gt;
&lt;hr /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Launch map&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Intent intent = new Intent(&quot;android.intent.action.VIEW&quot;, Uri.parse(&quot;geo:35.710883,139.796321?z=20&quot;));&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;startActivity(intent);&lt;br /&gt;
&lt;hr /&gt;geo:に続けて、経度と緯度を指定し、z=で拡大率を１〜２３の間で指定します。&lt;br /&gt;
拡大率は１が地球全体で、２で２の２乗拡大、３で２の３乗拡大と続きます。&lt;br /&gt;
また、「geo:0,0?q=地名」と指定すれば、地名検索が行われます。 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
以下は、メーラーを起動する例です。&lt;br /&gt;
&lt;hr /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Launch Mailer&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String subject = getString(R.string.subject);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String message = getString(R.string.message);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Intent intent = new Intent(&quot;android.intent.action.SENDTO&quot;, Uri.parse(&quot;mailto:test@test.com&quot;))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; .putExtra(Intent.EXTRA_SUBJECT, subject)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; .putExtra(Intent.EXTRA_TEXT, message);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; startActivity(intent);&lt;br /&gt;
&lt;hr /&gt;リソースのvalues/strings.xmlにsubject要素を追加して任意のメールの件名、message要素には任意の本文を指定しておきます。&lt;br /&gt;
後はIntentとUriに上記のように指定すればメーラーが起動します。</content><link rel='replies' type='application/atom+xml' href='http://technical-android.blogspot.com/feeds/4678057426082497585/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://technical-android.blogspot.com/2011/04/activity.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/4678057426082497585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/4678057426082497585'/><link rel='alternate' type='text/html' href='http://technical-android.blogspot.com/2011/04/activity.html' title='他のActivityを起動'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5852923695610045805.post-7975949124954072803</id><published>2011-04-21T17:39:00.000+09:00</published><updated>2011-04-21T17:39:51.070+09:00</updated><title type='text'>AndroidManifest.xmlの権限一覧</title><content type='html'>アンドロイドアプリをインストールする際に、ユーザーはアプリが使用する機能を一覧表示させ、機能を使用させたくない場合はインストールしないなどしてセキュリティを確保します。&lt;br /&gt;
&lt;br /&gt;
この時一覧表示させる為に使用されるのがAndroidManifest.xmlファイルです。&lt;br /&gt;
アプリを開発する際はこのファイルを編集して使用する機能権限を有効にする必要があります。&lt;br /&gt;
&lt;br /&gt;
AndroidManifest.xmlファイルに設定することができる機能には以下のようなものがあります。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table border=&quot;1&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;権限の名前&lt;/td&gt;&lt;td&gt;内容&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;android.permission.ACCESS_COARSE_LOCATION&lt;/td&gt;&lt;td&gt;低精度の位置情報の取得&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;android.permission.ACCESS_FINE_LOCATION&lt;/td&gt;&lt;td&gt;高精度の位置情報の取得&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;android.permission.ACCESS_MOCK_LOCATION&lt;/td&gt;&lt;td&gt;デバッグ用の位置情報の取得&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;android.permission.CONTROL_LOCATION_UPDATES&lt;/td&gt;&lt;td&gt;位置情報の更新&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;android.permission.ACCESS_NETWORK_STATE&lt;/td&gt;&lt;td&gt;ネットワーク状態を取得&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;android.permission.ACCESS_WIFI_STATE&lt;/td&gt;&lt;td&gt;WiFiの状態を取得&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;android.permission.BLUETOOTH&lt;/td&gt;&lt;td&gt;BlueToothを操作&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;android.permission.BLUETOOTH_ADMIN&lt;/td&gt;&lt;td&gt;BlueToothの探索と接続&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;android.permission.CALL_PHONE&lt;/td&gt;&lt;td&gt;電話のダイアル（救急と警察を除く）&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;android.permission.CALL_PRIVILEGED&lt;/td&gt;&lt;td&gt;電話のダイアル（救急と警察を含む）&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;android.permission.PROCESS_OUTGOING_CALLS&lt;/td&gt;&lt;td&gt;電話の発信処理への介入&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;android.permission.MODIFY_PHONE_STATE&lt;/td&gt;&lt;td&gt;電話の状態の書き換え&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;android.permission.VIBRATE&lt;/td&gt;&lt;td&gt;バイブ機能の利用&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;android.permission.DEVICE_POWER&lt;/td&gt;&lt;td&gt;低水準電源管理の利用&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;android.permission.WAKE_LOCK&lt;/td&gt;&lt;td&gt;高水準電源管理の利用&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;android.permission.CAMERA&lt;/td&gt;&lt;td&gt;カメラの利用&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;android.permission.RECORD_AUDIO&lt;/td&gt;&lt;td&gt;音声録音の利用&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;android.permission.MODIFY_AUDIO_SETTINGS&lt;/td&gt;&lt;td&gt;音声機能の設定の書き換え&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;android.permission.FORCE_BACK&lt;/td&gt;&lt;td&gt;「戻る」ボタンに相当する処理&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;android.permission.READ_INPUT_STATE&lt;/td&gt;&lt;td&gt;キーとスイッチの直接の読み込み&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;android.permission.INTERNET&lt;/td&gt;&lt;td&gt;インターネットへの接続&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;android.permission.WRITE_GSERVICES&lt;/td&gt;&lt;td&gt;Google mapサービスの利用&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;android.permission.READ_HISTORY_BOOKMARKS&lt;/td&gt;&lt;td&gt;履歴とお気に入りの読み込み&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;android.permission.WRITE_HISTORY_BOOKMARKS&lt;/td&gt;&lt;td&gt;履歴とお気に入りの書き込み&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;android.permission.SET_TIME&lt;/td&gt;&lt;td&gt;日付と時刻の設定&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;android.permission.SET_TIME_ZONE&lt;/td&gt;&lt;td&gt;タイムゾーンの設定&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;android.permission.READ_CONTACTS&lt;/td&gt;&lt;td&gt;「連絡先」データの読み込み&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;android.permission.WRITE_CONTACTS&lt;/td&gt;&lt;td&gt;「連絡先」データの書き込み&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;android.permission.WRITE_SETTINGS&lt;/td&gt;&lt;td&gt;「設定」データの書き込み&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;android.permission.MOUNT_FORMAT_FILESYSTEMS&lt;/td&gt;&lt;td&gt;SDカードのフォーマット&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;android.permission.MOUNT_UNMOUNT_FILESYSTEMS&lt;/td&gt;&lt;td&gt;SDカードのマウント・アンマウント&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;android.permission.WRITE_EXTERNAL_STORAGE&lt;/td&gt;&lt;td&gt;SDカードの書き込み&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;android.permission.REBOOT&lt;/td&gt;&lt;td&gt;Androidの再起動&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;android.permission.RECEIVE_BOOT_COMPLETED&lt;/td&gt;&lt;td&gt;Androidの起動完了の検出&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt; &lt;/table&gt;&lt;hr /&gt;&lt;br /&gt;
AndroidManifest.xmlファイルに上記の物を書くとアプリで機能を使用することができるようになります。</content><link rel='replies' type='application/atom+xml' href='http://technical-android.blogspot.com/feeds/7975949124954072803/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://technical-android.blogspot.com/2011/04/androidmanifestxml.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/7975949124954072803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/7975949124954072803'/><link rel='alternate' type='text/html' href='http://technical-android.blogspot.com/2011/04/androidmanifestxml.html' title='AndroidManifest.xmlの権限一覧'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5852923695610045805.post-5100495425876927824</id><published>2011-02-10T15:16:00.000+09:00</published><updated>2011-02-10T15:16:37.137+09:00</updated><title type='text'>EditTextのキーボードタイプ</title><content type='html'>EditTextはテキスト入力を行うためのクラスです。iPhoneではUITextFieldやUITextViewに相当する物です。&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&lt;edittext android:inputtype=&quot;text|textEmailAddress&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;EditText android:inputType=&quot;text|textEmailAddress&quot; /&amp;gt;&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
inputTypeには、テキスト入力時に表示されるキーボードのタイプを指定します。&lt;br /&gt;
&lt;table border=&quot;1&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;タイプ&lt;/td&gt;&lt;td&gt;内容&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;text&lt;/td&gt;&lt;td&gt;普通のテキスト入力用&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;textEmailAddress&lt;/td&gt;&lt;td&gt;メールアドレス入力用&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;number&lt;/td&gt;&lt;td&gt;数字入力用&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;numberSigned&lt;/td&gt;&lt;td&gt;符号有り&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;numberDecimal&lt;/td&gt;&lt;td&gt;10進数&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;date&lt;/td&gt;&lt;td&gt;日付入力用&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;multiLine&lt;/td&gt;&lt;td&gt;複数行&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;textAutoCorrect&lt;/td&gt;&lt;td&gt;スペルミスの自動修正&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;br /&gt;
上の例は、メールアドレスを入力する為のテキスト入力エリアを示します。キーボードもメールアドレスの入力に特化したキーボードが表示されるようになります。&lt;br /&gt;
&lt;br /&gt;
他にも、&lt;br /&gt;
&lt;HR&gt;&amp;lt;EditText android:inputType=&quot;text|textMultiLine|textAutoCorrect&quot; /&amp;gt;&lt;br /&gt;
&lt;HR&gt;&lt;br /&gt;
とすれば複数行でスペルミスを自動修正するテキスト入力エリアが表示されるようになります。</content><link rel='replies' type='application/atom+xml' href='http://technical-android.blogspot.com/feeds/5100495425876927824/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://technical-android.blogspot.com/2011/02/edittext.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/5100495425876927824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/5100495425876927824'/><link rel='alternate' type='text/html' href='http://technical-android.blogspot.com/2011/02/edittext.html' title='EditTextのキーボードタイプ'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5852923695610045805.post-3447582964461943014</id><published>2010-11-11T11:44:00.000+09:00</published><updated>2010-11-11T11:44:07.181+09:00</updated><title type='text'>ImageViewにパラパラ漫画を表示</title><content type='html'>Androidでは、複数画像をパラパラ漫画のように表示するアニメーションをFrame-By-Frame Animationと呼ぶそうです。Frame-ByFrame AnimationはAnimationDrawableクラスを使用します。&lt;br /&gt;
&lt;br /&gt;
アニメーションの内容をXMLファイルで用意しておき、それをAnimationDrawableクラスに読み込ませます。&lt;br /&gt;
以下のファイルをリソースのanimフォルダにanimation.xmlとしてプロジェクトに追加しておきます。&lt;br /&gt;
&lt;hr /&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;&lt;br /&gt;
&amp;lt;animation-list xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot; android:oneshot=&quot;false&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:drawable=&quot;@drawable/android1&quot; android:duration=&quot;100&quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:drawable=&quot;@drawable/android2&quot; android:duration=&quot;100&quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:drawable=&quot;@drawable/android3&quot; android:duration=&quot;100&quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:drawable=&quot;@drawable/android4&quot; android:duration=&quot;100&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/animation-list&amp;gt;&lt;br /&gt;
&lt;hr /&gt;android1〜４はアニメーションで使用する画像ファイル名です。それぞれの画像を100msecずつ表示するように指定しています。&lt;br /&gt;
&lt;br /&gt;
ソースは以下のようにします。&lt;br /&gt;
&lt;hr /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; AnimationDrawable mAnimDrawable = null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ImageView imgView = null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ・&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ・&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // ImageViewのバックグランドにXMLファイルからアニメーションを読み込み&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imgView.setBackgroundResource(R.anim.animation);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // ImageViewからAnimationDrawableを取得&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mAnimDrawable = (AnimationDrawable)imgView.getBackground();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // アニメーション開始 &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mAnim.start();&lt;br /&gt;
&lt;hr /&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-android.blogspot.com/feeds/3447582964461943014/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://technical-android.blogspot.com/2010/11/imageview.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/3447582964461943014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/3447582964461943014'/><link rel='alternate' type='text/html' href='http://technical-android.blogspot.com/2010/11/imageview.html' title='ImageViewにパラパラ漫画を表示'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5852923695610045805.post-6764154723368004466</id><published>2010-11-11T11:29:00.001+09:00</published><updated>2010-11-11T11:37:30.451+09:00</updated><title type='text'>Viewを回転させたり拡大縮小させたり</title><content type='html'>Androidにもアニメーションを行わせる仕組みが予め組み込まれています。&lt;br /&gt;
iPhoneのアニメーションのやり方とは大きく異なります。 &lt;br /&gt;
&lt;br /&gt;
Androidでは１枚の画像を拡大縮小・回転・移動・透過変更させることを、Tween Animationと呼ぶそうです。 Tween AnimationはAnimationクラスを使用します。&lt;br /&gt;
&lt;br /&gt;
また、複数画像をパラパラ漫画のように表示するアニメーションをFrame-By-Frame Animationと呼ぶそうです。Frame-ByFrame AnimationはAnimationDrawableクラスを使用します。&lt;br /&gt;
&lt;br /&gt;
アニメーションの内容をXMLファイルで用意しておき、それをAnimationクラスに読み込ませます。&lt;br /&gt;
以下のファイルをリソースのanimフォルダにanimation.xmlとしてプロジェクトに追加しておきます。&lt;br /&gt;
&lt;hr /&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;&lt;br /&gt;
&amp;lt;set xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;alpha&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; android:fromAlpha=&quot;0.0&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; android:toAlpha=&quot;1.0&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; android:duration=&quot;5000&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; android:repeatCount=&quot;infinite&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; android:repeatMode=&quot;restart&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/set&amp;gt;&lt;br /&gt;
&lt;hr /&gt;上記は透過レベルを０〜１に５秒間でじわっと変化させるアニメーションの例です。&lt;br /&gt;
拡大縮小・回転等の各タグの意味は&lt;a href=&quot;http://developer.android.com/guide/topics/resources/animation-resource.html&quot;&gt;Developerページ&lt;/a&gt;をご覧下さい。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
そしてソースを以下のようにします。&lt;br /&gt;
&lt;hr /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private ImageView imgView = null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private Animation mAnim = null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ・&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ・&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imgView = (ImageView)findViewById(R.id.animView);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // animation.xmlファイルを読み込み&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mAnim = AnimationUtils.loadAnimation(this, R.anim.animation);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; imgView.startAnimation(mAnim);&lt;br /&gt;
&lt;hr /&gt;上記はＸＭＬファイルをAnimationクラスに読み込み、ImageViewクラスに設定した画像の透過レベルをアニメーションで表示させています。</content><link rel='replies' type='application/atom+xml' href='http://technical-android.blogspot.com/feeds/6764154723368004466/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://technical-android.blogspot.com/2010/11/view.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/6764154723368004466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/6764154723368004466'/><link rel='alternate' type='text/html' href='http://technical-android.blogspot.com/2010/11/view.html' title='Viewを回転させたり拡大縮小させたり'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5852923695610045805.post-799730103443301622</id><published>2010-11-11T10:48:00.000+09:00</published><updated>2010-11-11T10:48:05.185+09:00</updated><title type='text'>スレッド</title><content type='html'>AndroidでもiPhone同様、スレッドを使用することができます。&lt;br /&gt;
Androidの場合、一部のコントロールを除いて、別スレッドからメインスレッドのUIにはアクセスできないようです。（例外が発生します。）&lt;br /&gt;
その為、ハンドラに処理を渡してメインスレッドの方で実際の処理を行わせます。&lt;br /&gt;
ハンドラを使うので、android.os.Handlerをインポートしておく必要があります。&lt;br /&gt;
&lt;hr /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Handler mHandler = new Handler();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ・&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ・&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Thread th = new Thread() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public void run() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // 別スレッドの処理&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ・&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ・&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ・&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mHandler.post(new Runnable() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public void run() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // メインスレッドのTextViewにスレッド処理終了を表示&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mTextView1.setText(&quot;Finished&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; th.start(); // 別スレッドの処理開始&lt;br /&gt;
&lt;hr /&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-android.blogspot.com/feeds/799730103443301622/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://technical-android.blogspot.com/2010/11/blog-post_11.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/799730103443301622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/799730103443301622'/><link rel='alternate' type='text/html' href='http://technical-android.blogspot.com/2010/11/blog-post_11.html' title='スレッド'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5852923695610045805.post-3148270694950006659</id><published>2010-11-08T09:36:00.000+09:00</published><updated>2010-11-08T09:36:28.265+09:00</updated><title type='text'>サウンドの停止・一時停止</title><content type='html'>サウンドの再生を停止・一時停止する場合、以下のメソッドを呼び出します。&lt;br /&gt;
&lt;br /&gt;
MediaPlayerクラス&lt;br /&gt;
stop：停止&lt;br /&gt;
pause：一時停止&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;MediaPlayer mp = MediaPlayer.create(this, R.raw.soundFile);&lt;br /&gt;
mp.start(); // 再生&lt;br /&gt;
・&lt;br /&gt;
・&lt;br /&gt;
・&lt;br /&gt;
mp.pause(); // 一時停止&lt;br /&gt;
・&lt;br /&gt;
・&lt;br /&gt;
・&lt;br /&gt;
mp.stop();  // 再生停止&lt;br /&gt;
&lt;hr /&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-android.blogspot.com/feeds/3148270694950006659/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://technical-android.blogspot.com/2010/11/blog-post_3832.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/3148270694950006659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/3148270694950006659'/><link rel='alternate' type='text/html' href='http://technical-android.blogspot.com/2010/11/blog-post_3832.html' title='サウンドの停止・一時停止'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5852923695610045805.post-6668905717207932105</id><published>2010-11-08T09:32:00.000+09:00</published><updated>2010-11-08T09:32:22.537+09:00</updated><title type='text'>サウンドの早送り巻き戻し</title><content type='html'>サウンドファイルの再生中に早送りや巻き戻しを行うことができます。&lt;br /&gt;
MediaPlayerクラスの以下のメソッドを使用します。&lt;br /&gt;
&lt;br /&gt;
getDuration：全体の再生時間をmsec単位で取得&lt;br /&gt;
getCurrentPosition：現在の再生位置をmsec単位で取得&lt;br /&gt;
toSeek：再生位置をmsec単位で指定&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; MediaPlayer mp = MediaPlayer.create(this, R.raw.soundFile);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mp.start(); // 再生&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ・&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ・&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ・&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; int totalTime = mp.getDuration();&amp;nbsp;&amp;nbsp; // サウンドの再生時間をmsec単位で取得&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; int seekTime = mp.getCurrentPosition(); // サウンドの現在の再生位置をmsec単位で取得&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; seekTime -= 2000; // 2秒巻き戻し &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( seekTime &amp;lt; 0) seekTime = 0; // ０より小さい場合は開始位置に移動&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( totalTime &amp;lt; seekTime ) seekTime = totalTime; // サウンド全体の長さより長い場合はサウンドの最後に移動&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mp.seekTo(seekTime); //再生位置に移動&lt;br /&gt;
&lt;hr /&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-android.blogspot.com/feeds/6668905717207932105/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://technical-android.blogspot.com/2010/11/blog-post_08.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/6668905717207932105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/6668905717207932105'/><link rel='alternate' type='text/html' href='http://technical-android.blogspot.com/2010/11/blog-post_08.html' title='サウンドの早送り巻き戻し'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5852923695610045805.post-7912547766658192456</id><published>2010-11-07T16:41:00.002+09:00</published><updated>2010-11-07T16:43:17.871+09:00</updated><title type='text'>任意のディレクトリ配下のサウンドを再生する</title><content type='html'>Androidでは、任意のディレクトリに格納されているサウンドファイルを再生することもできます。（読み取り権限は必要です）&lt;br /&gt;
android.media.MediaPlayerをimportし、以下のように記述します。&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Play sound in directories&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mp = new MediaPlayer();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String dst = &quot;/data/data/任意のディレクトリ名/任意のファイル名&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // SD Cardのサウンドを再生する場合&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // dst = &quot;/sdcard/任意のサウンドファイル名&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mp.setDataSource(dst);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mp.prepare(); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mp.start();&lt;br /&gt;
&lt;hr /&gt;上記では例外処理がありませんが、存在しないファイルなどを指定した場合は例外が発生しますので、「setDataSource」と「prepare」メソッドの呼び出しはtry〜catchで例外を補足する必要があります。&lt;br /&gt;
&lt;br /&gt;
また、サウンドファイルは予めアンドロイドシミュレータに配置しておく必要がありますが、その為のコマンドは、ターミナルから以下のように入力します。&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;adb push /data/data/任意のディレクトリ名/サウンドファイル名 ローカルのサウンドファイル名&lt;br /&gt;
&lt;hr /&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-android.blogspot.com/feeds/7912547766658192456/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://technical-android.blogspot.com/2010/11/blog-post_9746.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/7912547766658192456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/7912547766658192456'/><link rel='alternate' type='text/html' href='http://technical-android.blogspot.com/2010/11/blog-post_9746.html' title='任意のディレクトリ配下のサウンドを再生する'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5852923695610045805.post-7061351359250924851</id><published>2010-11-07T16:27:00.001+09:00</published><updated>2010-11-08T09:46:12.378+09:00</updated><title type='text'>リソースのサウンドファイル再生</title><content type='html'>Androidはサウンド再生が簡単に行えます。&lt;br /&gt;
MediaPlayerクラスに再生したいサウンドを指定して、startメソッドで再生させるだけです。&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MediaPlayer mp = MediaPlayer.create(this, R.raw.soundFileName);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mp.start();&lt;br /&gt;
&lt;hr /&gt;上記はサウンドファイルをリソースから再生する例です。&lt;br /&gt;
リソースディレクトリにrawディレクトリを作成し、その中にsoundFileName.mp3等のサウンドファイルを格納しておきます。&lt;br /&gt;
&lt;br /&gt;
なお、上記ではMediaPlayerの解放処理がありませんが、再生するActivity（画面）が破棄される場合はMediaPlayerのインスタンスも解放が必要です。&lt;br /&gt;
&lt;hr /&gt;@Override&lt;br /&gt;
// Activityの破棄 &lt;br /&gt;
protected void onDestroy() {&lt;br /&gt;
super.onDestroy();&lt;br /&gt;
mp.stop();&lt;br /&gt;
mp.release(); // 解放&lt;br /&gt;
}&lt;br /&gt;
&lt;hr /&gt;私はＣから来てるので解放処理は行うのが当たり前ですが、Javaでは解放を明示するのはめずらしいのでしょうか？</content><link rel='replies' type='application/atom+xml' href='http://technical-android.blogspot.com/feeds/7061351359250924851/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://technical-android.blogspot.com/2010/11/blog-post_07.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/7061351359250924851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/7061351359250924851'/><link rel='alternate' type='text/html' href='http://technical-android.blogspot.com/2010/11/blog-post_07.html' title='リソースのサウンドファイル再生'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5852923695610045805.post-5687634524616145639</id><published>2010-11-02T10:20:00.000+09:00</published><updated>2010-11-02T10:20:05.198+09:00</updated><title type='text'>設定情報ファイルの保存場所</title><content type='html'>Androidでは、設定ファイルを保存すると、エミュレータ内の以下の場所に保存されます。&lt;br /&gt;
&lt;br /&gt;
/data/data/パッケージ名(jp.co.・・・・)/shared_prefs/ファイル名&lt;br /&gt;
&lt;br /&gt;
また、エミュレータで保存したファイルを取り出すことができます。&lt;br /&gt;
ターミナルを立ち上げ、以下のコマンドを入力します。&lt;br /&gt;
&lt;br /&gt;
adb pull /data/data/パッケージ名(jp.co.・・・)/shared_prefs/settings.xml test.xml&lt;br /&gt;
&lt;br /&gt;
上の例ではsettings.xmlというAndroidエミュレータ上のファイルを、カレントディレクトリのtest.xmlファイルとして取り出しています。adbコマンドはAndroid SDKをインストールしていないと使えません。&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;iPhoneだとiPhoneシミュレータが使っているディレクトリを直接見に行けるのですが、Androidはこのようにコマンド入力がある分、少し面倒です。</content><link rel='replies' type='application/atom+xml' href='http://technical-android.blogspot.com/feeds/5687634524616145639/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://technical-android.blogspot.com/2010/11/blog-post_02.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/5687634524616145639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/5687634524616145639'/><link rel='alternate' type='text/html' href='http://technical-android.blogspot.com/2010/11/blog-post_02.html' title='設定情報ファイルの保存場所'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5852923695610045805.post-13986960534559920</id><published>2010-11-02T10:03:00.001+09:00</published><updated>2010-11-02T10:09:39.676+09:00</updated><title type='text'>SharedPreferencesクラスで簡単Save Load</title><content type='html'>Androidでは、比較的簡単に設定情報の保存が行えます。&lt;br /&gt;
getSharedPreferences関数でファイル名からSharedPreferencesクラスのインスタンスを生成し、編集するためにEditorメソッドでEditorインスタンスを取得後、編集、保存します。&lt;br /&gt;
&lt;hr /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Button mSaveButton = null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Button mLoadButton = null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Button mRemoveButton = null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; EditText mTextView = null;&lt;br /&gt;
・&lt;br /&gt;
・&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mTextView = (EditText)findViewById(R.id.textView);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mSaveButton = (Button)findViewById(R.id.saveButton);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mSaveButton.setOnClickListener(new OnClickListener() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // Saveボタン押下時処理&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(View v) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // settings.xmlファイルのSharedPreferencesインスタンスを生成&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SharedPreferences sp = getSharedPreferences(&quot;settings&quot;, MODE_PRIVATE);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // Editorを取得&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SharedPreferences.Editor editor = sp.edit();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // EditTextから文字列取得&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SpannableStringBuilder ssb = (SpannableStringBuilder)mTextView.getText();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String str = ssb.toString();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // Editorに保存データ設定&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; editor.putString(&quot;text&quot;, str);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // Editorを保存&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; editor.commit();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mLoadButton = (Button)findViewById(R.id.loadButton);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mLoadButton.setOnClickListener(new OnClickListener() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // Loadボタン押下時処理&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(View v) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // settings.xmlファイルのSharedPreferencesインスタンスを生成&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SharedPreferences sp = getSharedPreferences(&quot;settings&quot;, MODE_PRIVATE);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // 保存文字列を取得&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String str = sp.getString(&quot;text&quot;, &quot;&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mTextView.setText(str);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mRemoveButton = (Button)findViewById(R.id.removeButton);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mRemoveButton.setOnClickListener(new OnClickListener() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // Removeボタン押下時処理&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(View v) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // settings.xmlファイルのSharedPreferencesインスタンス生成&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SharedPreferences sp = getSharedPreferences(&quot;settings&quot;, MODE_PRIVATE);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // Editor取得&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SharedPreferences.Editor editor = sp.edit();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // 文字列を削除&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; editor.remove(&quot;text&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // 削除を確定＆保存&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; editor.commit();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;
&lt;hr /&gt;上の例では、Saveボタンを押して文字列を保存、Loadボタンで保存した文字列を読み出し、Removeボタンで削除を行います。&lt;br /&gt;
&lt;br /&gt;
保存ファイル名はgetSharedPreferencesでインスタンス取得時に指定します。上の例ではsettingsというXMLファイルです。 &lt;br /&gt;
&lt;br /&gt;
SharedPreferencesのgetString / putStringメソッドで文字列の格納・取り出しが行えます。上の例では&quot;text&quot;と指定していますが、これはXMLファイルに保存する時の保存タグを指定しているものです。他にputIntやputBoolean等、大体の基本型は同じように扱えるようです。&lt;br /&gt;
&lt;br /&gt;
最後に、commitで変更を確定しています。これが無いと実際の保存処理が行われません。</content><link rel='replies' type='application/atom+xml' href='http://technical-android.blogspot.com/feeds/13986960534559920/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://technical-android.blogspot.com/2010/11/sharedpreferencessave-load.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/13986960534559920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/13986960534559920'/><link rel='alternate' type='text/html' href='http://technical-android.blogspot.com/2010/11/sharedpreferencessave-load.html' title='SharedPreferencesクラスで簡単Save Load'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5852923695610045805.post-5913943152334975519</id><published>2010-11-01T19:41:00.000+09:00</published><updated>2010-11-01T19:41:19.773+09:00</updated><title type='text'>EditTextから文字列取得</title><content type='html'>EditTextコントロールはWindowsのテキストボックスのようなものです。&lt;br /&gt;
IOSでいうところのUITextViewと似ています。 &lt;br /&gt;
&lt;br /&gt;
ただし、textプロパティのような物がありませんので、文字列の取得はAndroid独特の方法です。&lt;br /&gt;
&lt;hr /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // EditTextから文字列取得&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SpannableStringBuilder ssb = (SpannableStringBuilder)mTextView.getText();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String str = ssb.toString();&lt;br /&gt;
&lt;hr /&gt;独特と言っても、いったんSpannableStringBuilderに取り込むというだけです。&lt;br /&gt;
SpannableStringBuilderクラスは、StringBuilderのAndroid版？です。&lt;br /&gt;
IOSで言うとNSMutableStringでしょうか。Stringクラスが固定文字列なのに対して、SpannableStringBuilderは可変の文字列です。&lt;br /&gt;
&lt;br /&gt;
EditTextのgetText()メソッドはEditableインタフェースを持つオブジェクトを返却するそうです。&lt;br /&gt;
これを同じくEditableな文字列を扱うクラスであるSpannableStringBuilderにキャストし、同クラスのtoStringメソッドで文字列化するという流れになります。</content><link rel='replies' type='application/atom+xml' href='http://technical-android.blogspot.com/feeds/5913943152334975519/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://technical-android.blogspot.com/2010/11/edittext.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/5913943152334975519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/5913943152334975519'/><link rel='alternate' type='text/html' href='http://technical-android.blogspot.com/2010/11/edittext.html' title='EditTextから文字列取得'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5852923695610045805.post-895479928586716231</id><published>2010-11-01T12:12:00.000+09:00</published><updated>2010-11-01T12:12:59.572+09:00</updated><title type='text'>ProgressDialogで進行状況を表示</title><content type='html'>ProgressDialogを使うと、進行状況を表示できるようになります。WindowsのProgressBarみたいなものです。&lt;br /&gt;
&lt;br /&gt;
setTitleメソッドで表示するメッセージを指定し、&lt;br /&gt;
setMaxで進行状況の最大値、&lt;br /&gt;
setButton / setButton2で表示するボタンを指定します。&lt;br /&gt;
setProgressで進行状況を設定します。 &lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private EditText mResultText = null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private ProgressDialog mProgressDialog;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private int mProgress = 0;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // ProgressDialogクラスで進行状況を表示&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mProgressDialog = new ProgressDialog(MainActivity.this);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mProgressDialog.setTitle(&quot;Progress Dialogで進行状況表示&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mProgressDialog.setMax(100);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mProgressDialog.setButton(&quot;OK&quot;, new DialogInterface.OnClickListener() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(DialogInterface dialog, int whichButton) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mResultText.setText(&quot;Press OK at &quot; + mProgress + &quot; %&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mProgressDialog.setButton2(&quot;Cancel&quot;, new DialogInterface.OnClickListener() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(DialogInterface dialog, int whichButton) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mResultText.setText(&quot;Press Cancel at &quot; + mProgress + &quot; %&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mProgress = 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mProgressDialog.show();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mProgressDialog.setProgress(0);&lt;br /&gt;
&lt;hr /&gt;時間のかかる処理を行わせる前に、上記で進行状況表示の初期ダイアログを表示します。&lt;br /&gt;
そして、進行状況を逐次表示するために、イベントハンドラを使ってメッセージを受け付けるようにします。&lt;br /&gt;
&lt;br /&gt;
以下がイベントハンドラの例です。イベントハンドラも時間のかかる処理の前に用意しておく必要があります。&lt;br /&gt;
イベントハンドラではOSのメッセージを使用しますので、&lt;br /&gt;
import android.os.Message&lt;br /&gt;
でMessageをインポートしておきます。&lt;br /&gt;
&lt;hr /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private Handler mProgressHandler = null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mProgressHandler = new Handler() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public void handleMessage(Message msg) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; super.handleMessage(msg);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (mProgress &amp;gt;= 100) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mProgressDialog.dismiss();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mResultText.setText(&quot;Finished process at &quot; + mProgress + &quot; %&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mProgress++;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mProgressDialog.incrementProgressBy(1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mProgressHandler.sendEmptyMessageDelayed(0, 100);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;
&lt;hr /&gt;上記では、単純に進行状況(mProgress)を１ずつ加算していき、100%になったらProgressDialogを閉じて、終了メッセージを表示するという処理になっています。&lt;br /&gt;
100になっていなければ、incrementProgressByメソッドでプログレスバーの表示を増加させ、ハンドラのsendEmptyMessageDelayedメソッドで100ms後に自身に０というメッセージを送らせています。&lt;br /&gt;
&lt;br /&gt;
そして、実際に時間のかかる処理を走らせる時に&lt;br /&gt;
&lt;hr /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mProgressHandler.sendEmptyMessage(0);&lt;br /&gt;
&lt;hr /&gt;としてイベントハンドラに対し０というメッセージを送ります。&lt;br /&gt;
&lt;br /&gt;
上記例では、単純にイベントハンドラが呼ばれる度に進行状況を１ずつ加算していくようにしましたが、sendEmptyMessageで実際のパーセンテージを送信するようにして、もっと正確な進行状況が表示されるようにすると、もっと良くなるかもしれません。</content><link rel='replies' type='application/atom+xml' href='http://technical-android.blogspot.com/feeds/895479928586716231/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://technical-android.blogspot.com/2010/11/progressdialog.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/895479928586716231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/895479928586716231'/><link rel='alternate' type='text/html' href='http://technical-android.blogspot.com/2010/11/progressdialog.html' title='ProgressDialogで進行状況を表示'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5852923695610045805.post-6437142139870073169</id><published>2010-11-01T11:11:00.000+09:00</published><updated>2010-11-01T11:11:43.464+09:00</updated><title type='text'>TimePickerDialogクラスで時刻指定</title><content type='html'>TimePickerDialogクラスを使用すると、時刻を指定することができます。&lt;br /&gt;
OnTimeSetListenerで時刻設定が変更された時のイベントハンドラを登録し、コンストラクタで最初に表示される時刻を指定します。&lt;br /&gt;
TimePickerDialogクラス使用時は以下のimportが必要です。&lt;br /&gt;
import android.app.TimePickerDialog;&lt;br /&gt;
import android.app.TimePickerDialog.OnTimeSetListener;&lt;br /&gt;
import android.widget.TimePicker;&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // TimePickerDialogクラスで時刻指定&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; TimePickerDialog timePickerDialog = new TimePickerDialog(this, new OnTimeSetListener() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public void onTimeSet(TimePicker view, int hourOfDay, int minute) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mResultText.setText(String.format(&quot;%02d:%02d&quot;, hourOfDay, minute));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }, 10, 10, true);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; timePickerDialog.show();&lt;br /&gt;
&lt;hr /&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-android.blogspot.com/feeds/6437142139870073169/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://technical-android.blogspot.com/2010/11/timepickerdialog.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/6437142139870073169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/6437142139870073169'/><link rel='alternate' type='text/html' href='http://technical-android.blogspot.com/2010/11/timepickerdialog.html' title='TimePickerDialogクラスで時刻指定'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5852923695610045805.post-4733674434780096302</id><published>2010-11-01T10:47:00.002+09:00</published><updated>2010-11-01T11:13:03.012+09:00</updated><title type='text'>DatePickerDialogクラスで日付指定</title><content type='html'>DatePickerDialogクラスは日付を指定するダイアログです。&lt;br /&gt;
OnDateSetListenerクラスメソッドで日付が変更された時のイベントハンドラを指定します。また、コンストラクタで最初に指定する日付を指定します。&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // DatePickerDialogクラスで日付入力&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; DatePickerDialog datePickerDialog = new DatePickerDialog(this&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; , new DatePickerDialog.OnDateSetListener() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mResultText.setText(String.format(&quot;%04d/%02d/%02d&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; , year, monthOfYear+1, dayOfMonth));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }, 2010, 11, 1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; datePickerDialog.show(); &lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
また、以下のimportが必要です。&lt;br /&gt;
import android.app.DatePickerDialog;&lt;br /&gt;
import android.widget.DatePicker;</content><link rel='replies' type='application/atom+xml' href='http://technical-android.blogspot.com/feeds/4733674434780096302/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://technical-android.blogspot.com/2010/11/datepickerdialog.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/4733674434780096302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/4733674434780096302'/><link rel='alternate' type='text/html' href='http://technical-android.blogspot.com/2010/11/datepickerdialog.html' title='DatePickerDialogクラスで日付指定'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5852923695610045805.post-6651841856315116572</id><published>2010-11-01T10:29:00.000+09:00</published><updated>2010-11-01T10:29:26.802+09:00</updated><title type='text'>リストを表示する</title><content type='html'>AlertDialogクラスは、リストを表示することも可能です。&lt;br /&gt;
以下のようにsetItemsメソッドでString配列を渡すだけです。&lt;br /&gt;
&lt;hr /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; final String[] items = new String[]{&quot;one&quot;, &quot;two&quot;, &quot;three&quot;, &quot;four&quot;};&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; new AlertDialog.Builder(MainActivity.this)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; .setTitle(&quot;Alert Dialogでリスト表示&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; .setItems(items, new DialogInterface.OnClickListener() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(DialogInterface dialog, int which) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mResultText.setText(items[which]);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; })&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; .create()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; .show();&lt;br /&gt;
&lt;hr /&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-android.blogspot.com/feeds/6651841856315116572/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://technical-android.blogspot.com/2010/11/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/6651841856315116572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/6651841856315116572'/><link rel='alternate' type='text/html' href='http://technical-android.blogspot.com/2010/11/blog-post.html' title='リストを表示する'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5852923695610045805.post-9011965865813048284</id><published>2010-11-01T10:05:00.000+09:00</published><updated>2010-11-01T10:05:29.445+09:00</updated><title type='text'>AlertDialogクラス</title><content type='html'>AlertDialogクラスは、WindowsでいうところのMessageBoxのようなものです。&lt;br /&gt;
IOSで言うところのUIAlertViewクラスと似た機能を持っています。&lt;br /&gt;
&lt;br /&gt;
Builderメソッドでダイアログを表示するインスタンスを、setTitleでタイトルバーに表示される文字列、setMessageでダイアログ無いに表示される文字列を指定します。&lt;br /&gt;
&lt;br /&gt;
setPositiveButtonでOKなどの肯定ボタンを、setNegativeButtonでCancel等の否定的ボタン、setNeutralButtonで無視する等の中間的ボタンを指定します。 &lt;br /&gt;
&lt;hr /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; new AlertDialog.Builder(MainActivity.this)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; .setTitle(&quot;Alert Dialog OK&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; .setMessage(&quot;OK / Ignore / Cancel&quot;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; .setPositiveButton(&quot;OK&quot;, new DialogInterface.OnClickListener() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(DialogInterface dialog, int which) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mResultText.setText(&quot;Pressed OK&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; })&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; .setNegativeButton(&quot;Cancel&quot;, new DialogInterface.OnClickListener() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(DialogInterface dialog, int which) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mResultText.setText(&quot;Pressed Cancel&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; })&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; .setNeutralButton(&quot;Ignore&quot;, new DialogInterface.OnClickListener() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(DialogInterface dialog, int which) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mResultText.setText(&quot;Pressed Ignore&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; })&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; .create()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; .show();&lt;br /&gt;
&lt;hr /&gt;最後にcreateメソッドでインスタンスを生成し、showメソッドで表示しています。</content><link rel='replies' type='application/atom+xml' href='http://technical-android.blogspot.com/feeds/9011965865813048284/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://technical-android.blogspot.com/2010/11/alertdialog.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/9011965865813048284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/9011965865813048284'/><link rel='alternate' type='text/html' href='http://technical-android.blogspot.com/2010/11/alertdialog.html' title='AlertDialogクラス'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5852923695610045805.post-498009902182655960</id><published>2010-10-31T22:52:00.000+09:00</published><updated>2010-10-31T22:52:49.591+09:00</updated><title type='text'>ボタンのイベントハンドラ</title><content type='html'>&lt;a href=&quot;http://technical-android.blogspot.com/2010/10/blog-post.html&quot;&gt;ボタン&lt;/a&gt;では、イベントハンドラをmain.xmlファイルのonClickで指定しましたが、ソースからイベントハンドラを登録することもできます。&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mButton = (Button)findViewById(R.id.Button01);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // クリックされた時のリスナーを設定&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mButton.setOnClickListener(new OnClickListener() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(View v) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ((Button)v).setText(&quot;Clicked!&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;
&lt;hr /&gt;ちなみにButtonコントロールを使用する時は「import android.widget.Button」でボタンコントロールを、OnClickListenerを使用する時は「import android.view.View.OnClickListener」でクリックリスナーをインポートする必要があります。</content><link rel='replies' type='application/atom+xml' href='http://technical-android.blogspot.com/feeds/498009902182655960/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://technical-android.blogspot.com/2010/10/blog-post_31.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/498009902182655960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/498009902182655960'/><link rel='alternate' type='text/html' href='http://technical-android.blogspot.com/2010/10/blog-post_31.html' title='ボタンのイベントハンドラ'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5852923695610045805.post-3776921876506279664</id><published>2010-10-31T22:34:00.000+09:00</published><updated>2010-10-31T22:34:54.248+09:00</updated><title type='text'>ボタン</title><content type='html'>ボタンは、画面構成ファイルであるmain.xmlに以下のようにタグを指定し、コードにボタン押下時の処理内容を記述します。&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&amp;lt;Button android:onClick=&quot;button01ClickHandler&quot; android:text=&quot;@string/hello&quot; android:id=&quot;@+id/Button01&quot; android:layout_width=&quot;wrap_content&quot; android:layout_height=&quot;wrap_content&quot;&amp;gt;&amp;lt;/Button&amp;gt;&lt;br /&gt;
&lt;hr /&gt;Buttonタグはその名の通り、ボタンを配置するタグです。&lt;br /&gt;
onClickはボタンを押した時のイベントを指定します。&lt;br /&gt;
textはボタンに表示する文字列を指定します。上の例の場合、&quot;@string/hello&quot;となっていますが、リソースファイルからhelloという名前を持つ文字列を取り出すための指定子です。&lt;br /&gt;
リソースファイルはstrings.xmlというファイル名で、以下のようになっています。&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name=&quot;hello&quot;&amp;gt;Hello World, MainActivity!&amp;lt;/string&amp;gt;&lt;br /&gt;
&lt;hr /&gt;上の例の場合、リソースファイル(strings.xml)から「Hello World, MainActivity!」という文字列が取り出されるので、ボタンには「Hello World, MainActivity!」という文字列が表示されます。&lt;br /&gt;
&lt;br /&gt;
id=&quot;@+id/Button01&quot;というのは、処理からmain.xmlファイルを参照する時に、どのコントロールを取得するかのIDです。以下はコントロール取得時のソースコードの例です。&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mButton = (Button)findViewById(R.id.Button01);&lt;br /&gt;
・&lt;br /&gt;
・&lt;br /&gt;
・&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void button01ClickHandler(View v) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ((Button)v).setText(&quot;Button01 Clicked&quot;); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;hr /&gt;「findViewById」でコントロールの取得を指定します。&lt;br /&gt;
R.id.Button01というのが、画面のレイアウトファイル(main.xml)からButton01というIDを持つコントロールを取得する指定です。&lt;br /&gt;
&lt;br /&gt;
下段に「button01ClickHandler」というメソッドがありますが、これがボタンが押された時のイベントハンドラです。</content><link rel='replies' type='application/atom+xml' href='http://technical-android.blogspot.com/feeds/3776921876506279664/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://technical-android.blogspot.com/2010/10/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/3776921876506279664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/3776921876506279664'/><link rel='alternate' type='text/html' href='http://technical-android.blogspot.com/2010/10/blog-post.html' title='ボタン'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5852923695610045805.post-8802461621706192341</id><published>2010-10-31T21:32:00.000+09:00</published><updated>2010-10-31T21:32:06.463+09:00</updated><title type='text'>Android開発の基本</title><content type='html'>Androidはメインになる画面構成をXMLで定義し、画面を操作した時の動作をJava等で組み込みます。&lt;br /&gt;
&lt;br /&gt;
ここら辺の仕組みはSilverlightと同じです。というか、仕組み自体のアイデアはこちらが先でしょうか。&lt;br /&gt;
ちなみにSilverlightは画面構成をXAMLというXMLの一種で定義して、C#等の.Net言語で処理を実装します。</content><link rel='replies' type='application/atom+xml' href='http://technical-android.blogspot.com/feeds/8802461621706192341/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://technical-android.blogspot.com/2010/10/android_31.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/8802461621706192341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/8802461621706192341'/><link rel='alternate' type='text/html' href='http://technical-android.blogspot.com/2010/10/android_31.html' title='Android開発の基本'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5852923695610045805.post-2942222933560183394</id><published>2010-10-31T19:36:00.000+09:00</published><updated>2010-10-31T19:36:50.021+09:00</updated><title type='text'>Androidって何？</title><content type='html'>Androidとは、Google社が開発したOSの名前です。&lt;br /&gt;
&lt;br /&gt;
AppleのiPhon OSであるIOSに対抗心丸出しで出てきました。&lt;br /&gt;
&lt;br /&gt;
IOSと異なり、自由度は抜群に高く、どのハードウェアでもAndroid OSが稼働していればそれはAndroid端末です。&lt;br /&gt;
&lt;br /&gt;
カーネルはLinuxだそうです。開発は今のところJavaが主流で、一部ネイティブC等でも開発は可能なようです。&lt;br /&gt;
&lt;br /&gt;
開発環境はLinux、Windows、Mac OSのどれでもできます。&lt;br /&gt;
&lt;br /&gt;
基本Javaなので、JavaのSDKやAndroid SDK、Eclipse等の統合開発環境が必要です。&lt;br /&gt;
&lt;br /&gt;
筆者は基本的にC,C++,C#系の開発者なので、不慣れな所がありますが温かく見守って頂けると嬉しいです。</content><link rel='replies' type='application/atom+xml' href='http://technical-android.blogspot.com/feeds/2942222933560183394/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://technical-android.blogspot.com/2010/10/android.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/2942222933560183394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5852923695610045805/posts/default/2942222933560183394'/><link rel='alternate' type='text/html' href='http://technical-android.blogspot.com/2010/10/android.html' title='Androidって何？'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>