読者です 読者をやめる 読者になる 読者になる

AlarmManager

AlarmManagerを使うと、指定した時刻に指定したIntentの処理を実行できる・・・。AlarmManager | Android DevelopersActivityを呼ぶIntentを指定することで、Activityを起動したり、Serviceを呼ぶIntentを指定することでServiceを起動したり、ブロードキャス…

Camera

Cameraはカメラを扱うクラス・・・。Camera | Android Developersまずは、カメラを起動してシャッターを押すまでに表示されるプレビュー画面をアクティビティ上に表示するところまでをやる・・・。activity_main.xmlは、プレビュー画面はSurfaceViewに表示す…

MediaStore

写真、動画、音楽なども、ContentResolverを使って取り出す・・・。 MediaStoreに、それらのメディア情報に関する定数が定義されているので、それを使う・・・。MediaStore | Android Developersまず、activity_main.xmlは、今回は写真を表示するので、GridV…

BitmapFactory

前回は、Bitmapをファイルから読み込んだが、今回はdrawableリソースから読み込む・・・。 前回同様、BitmapFactoryで読み込む・・・。BitmapFactory | Android Developersactivity_main.xmlには、imageview1・・・。MainActivity.javaは、今回は、BitmapFac…

Bitmap

ImageViewの回では、srcにdrawableに置いた画像を直接指定して画像を表示していた・・・。 今回は、アプリフォルダにある画像ファイルを読み込んで、いったんBitmapにし、それをImageViewで表示する・・・。Bitmap | Android Developersactivity_main.xmlは…

ContactsContract

ContentResolverで連絡帳から名前を取り出してリスト表示するということはできたが、 電話番号やメールアドレスは取り出し方が面倒なので避けていた・・・。今回はContactsContractに定義された定数を使って、電話番号、メールアドレスも取り出していく・・…

FragmentTabHost

ActionBar.TabもAndroid5.0で非推奨になったので、タブUIを実現する方法のひとつとしてFragmentTabHostがある・・・。FragmentTabHost | Android DevelopersFragmentTabHostはTabHostのcontent部分をFragmentにできるようにしたもの・・・。 標準のWidgetで…

Zinc #37 DBにブックマーク情報を追加

DBにブックマーク情報を追加する・・・。Classを追加・・・。SQLiteOpenHelperを継承したUrlListDBHelperを追加・・・。改めてDB追加機能を作り直したので、名前はurllist.db、バージョンは1にしている・・・。 ので古い奴は削除してからインストール必須・…

Zinc #36 ブックマークの追加ダイアログの表示

ブックマーク機能を実装する・・・。 まずは、メニューアイテムのブックマークの追加、そしてそのあとに表示する確認画面としてのブックマークの追加ダイアログ・・・。menu_main.xmlにmenu_item_add_bookmarkを追加・・・。アイテムの表示名は"ブックマーク…

ActionBar.Tab

TabHostは非推奨になったので、Android3以降はActionBarの登場とともに、ActionBar.Tabというタブの機能が付くようになった・・・。ActionBar.Tab | Android DevelopersActionBar.Tabでタブを作成、画面はそれぞれがFragmentとなる・・・。XMLで、fragment1…

TabHost

タブで画面を切り替える方法はいろいろあるが、一番基本的な方法はTabHostを使う方法・・・。TabHost | Android Developers実はもう非推奨になっているはずだが、削除はされていない模様なので使えるには使えるっぽい・・・。 これを使って、タブで画面切り…

ContentResolver

Androidアプリ上で扱う写真や、動画、音声ファイル、電話帳、ブックマークなどあらゆるデータの情報はAndroid内部のDBに登録されている・・・。 このDBにアクセスするには、ContentResolverを使う・・・。ContentResolver | Android Developers今回は、電話…

Zinc #35 タブの切り替え

新しいタブを追加できるようにしたので、今度はタブを切り替える機能を実装する・・・。Fragmentを追加・・・。タブを切り替えるUIなのでTabsFragmentとする・・・。Classを追加・・・。タブ一覧はGridViewで表示する・・・。 そのGridViewのアイテムとして…

Zinc #34 新しいタブの追加

最初に表示されるタブでWebブラウジングしている途中で、新しいタブを追加した時の挙動を実装する・・・。まず、strings.xmlで、menu_item_add_tab_textの文字列を"新しいタブの追加"に・・・。あとは、MainActivity.java・・・。Map型のfragmentMapオブジェ…

Zinc #33 プログレスバーの表示

WebViewClientとURLバー、WebChromeClientとプログレスバー、を紐づけてWebページの繊維をブラウザっぽくみせる・・・。Java Classを追加・・・。WebViewClientの派生クラスCustomWebViewClient・・・。コンストラクタにはMainActivityとWebFragmentを渡す・…

Zinc #32 アクションバー(メニュー)にURLバーを表示

今回は、URLバーをアクションバーの上に表示する・・・。まず、Layout resource fileを追加・・・。menu_urlbarという名前にする・・・。また、menu_main.xmlで、このようにする・・・。 app:showAsAction="always"でメニューアイテムはアクションバー上にUI…

Zinc #31 URLのロード

WebViewでURLをロードする・・・。fragment_web.xmlに、WebViewとProgressBarを設置・・・。 ちょっと今回はLinearLayoutとかで区切るのはやめてみる・・・。 重なって表示されるか試したい・・・。 ただ、ProgressBarは今回は使わない・・・。MainActivity.…

Zinc #30 フラグメントの追加

今回からは、基本的にタブブラウザのタブの部分はFragmentTabHostじゃなくて、普通のFragmentをベースにやろうとおもう・・・。 FragmentTabHost、癖が強くて操作するのが難しいし、タブの置き場所も数が増えると限界感じるので・・・。Fragment(Blank)で、…

Zinc #29 プロジェクトの仕切り直し

前回までで、致命的な問題が山積していたので、今回からプロジェクトを仕切り直して、ソースコードを書き直そうとおもう・・・。layoutのxmlは、こんだけあったが、activity_main.xmlを残してそれ以外は全部削除・・・。javaのソースファイルもこんだけあっ…

DownloadManager

ファイルのダウンロードを実現するなら、DownloadManagerを使うという方法もある・・・。DownloadManager | Android Developersactivity_main.xmlは、edittext1がURL入力用・・・。 button1でダウンロードのリクエストを投げる・・・。BroadcastReceiverの派…

HttpURLConnection

HttpURLConnectionは、Java標準のHTTP通信のためのクラス・・・。HttpURLConnection | Android Developersもともと使えるが、Android6でDefaultHttpClientが使えなくなったので、より重要度が増している・・・。 前回のDefaultHttpClientを使ったものを、Htt…

DefaultHttpClient

そろそろ非同期処理の中で行う処理もまともなものにしていこう・・・。 HTTPリクエストを投げて、Webページのダウンロードやデータのポストを行うにはHttpClientを利用する・・・。DefaultHttpClient | Android Developers | Android DevelopersDefaultHttpC…

IntentService

IntentServiceも非同期処理を行うクラスだが、こちらはServiceの派生クラスで、主に画面遷移に関係なくバックグラウンドで時間のかかる処理を任せる場合に使う・・・。IntentService | Android Developersプロジェクトを作成したら、IntentServiceの派生クラ…

AsyncTaskLoader

AsyncTaskLoaderは、Android 3から導入された新しい非同期処理クラス・・・。AsyncTaskLoader | Android Developers近年、こちらのほうが推奨されているので、前回の非同期処理をこれで書いてみる・・・。AsyncTaskLoaderの派生クラスとしてCustomAsyncTaskL…

AsyncTask

前回までの、ワーカースレッドに重い処理を任せて、終わったら通知してもらうような処理を非同期処理という・・・。 ThreadとHandlerを使ったパターンは一番基本的なものだが、少々複雑なことをしようとするとこれらでは大変・・・AsyncTask | Android Devel…

Handler

ThreadとRunnableを使って、重たい処理を別のスレッドに任せることができた・・・。 そのスレッドの処理が終ったら、TextViewやButtonの状態、Toast表示などで終わったことを通知したい・・・。 package com.bgstation0.android.sample.handler_; import and…

Runnable

Threadは、スレッド上で実行する処理内容runメソッドを持つRunnableインタフェースを実装する必要がある・・・。Runnable | Android Developers今回は、匿名クラスでRunnable派生クラスを定義し、それをThreadのコンストラクタ引数に渡すことで、runを実行す…

Thread

ファイルのダウンロード、大量データのDBへの投入は、時間がかかる重たい処理・・・。 package com.bgstation0.android.sample.thread_; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.Menu; impor…

BroadcastReceiver

全てのアプリに対して投げるインテントをブロードキャストインテントと言い、それは例えばバッテリーの減少通知や、端末の起動通知、航空機モードへの切り替え通知など、システムから何かが発生したことを通知するときに使われることが多い・・・。 (またサ…

IntentFilter

Intentの項で、"http~"で始まるURIを持つ暗黙的インテントを投げたら、それにブラウザが反応し、起動して、そのURIの指すWebページを表示できた・・・。 このブラウザの様に、受け側のアプリが、送る側のインテントの条件に当てはまっていれば、アプリでそ…

Activity.startActivityForResult

アクティビティAから、別のアクティビティBを起動した後、元のアクティビティAに戻るときに、アクティビティBから値を受け取って、アクテビティA上で表示・・・。 このように戻るときにパラメータを受け取りたい場合は、Activity.startActivityForResultを使…

GridView

GridViewは、格子状に要素を表示するグリッドビューを扱うクラス・・・。GridView | Android DevelopersListViewと同様にAdapterと紐付けて使う・・・。GridViewを配置・・・。 numColumnsは列の数・・・。ここでは4列ずつ表示・・・。1つの要素のレイアウト…

ProgressBar

ProgressBarはプログレスバーを扱うクラス・・・。ProgressBar | Android Developers今回はボタンを押したら、プログレスバーが進むようにする・・・。Button、そしてProgressBarを配置・・・。 indeterminateは0%とか50%のような明確な進捗を表示しない不定…

FragmentTransaction.show

複数のフラグメントをaddした後のフラグメント表示の切り替えに関してはshowとhideを使って切り替える・・・。FragmentTransaction | Android Developers追加した後は、削除されない限り、ライフサイクルに変化がないので、showやhideで表示と非表示を繰り返…

FragmentManager.findFragmentByTag

replaceやaddした時に"tag1"などタグ名を付けていたと思うが、このタグ名からfindFragmentByTagで、Fragmentオブジェクトを探して取得することができる・・・。FragmentManager | Android Developers前回はMenuが7つあったが、今回は5つに減らした・・・。st…

FragmentManager.popBackStack

replace、または、addした時に、addToBackStackを呼んでおけば、バックキーで1つ前のフラグメントに戻ることができた・・・。 これは、バックキーを押した場合、デフォルトでpopBackStackが呼ばれるからである・・・。FragmentManager | Android Developers…

FragmentTransaction.add

フラグメントを切り替える方法は、FragmentTransaction.replaceで置換する方法の他にもう一つ、FragmentTransaction.addで追加するというものがある・・・。FragmentTransaction | Android Developersこの場合のフラグメントの状態はどうなるのかを検証する…

FragmentTransaction.addToBackStack

FragmentTransaction.replaceの後に、FragmentTransaction.addToBackStackを呼ぶと、置換前のフラグメントをバックスタックと呼ばれる領域(スタック?)に保存してくれる・・・。 これをすることで、バックキーを押したときに前のフラグメントに戻ることができ…

FragmentTransaction.replace

前回でも使ったが、FragmentTransaction.replaceで指定したFragmentに置き換えることができる・・・。FragmentTransaction | Android Developersreplaceは置き換えるということである・・・。 置き換えるということは、以前のフラグメントは破棄されるという…

FragmentTransaction

FragmentTransactionは、フラグメントの追加や置き換えなどの操作をするクラス・・・。FragmentTransaction | Android DevelopersFragmentManagerの項では、Fragmentタグを2つ用意して、activity_main.xmlに静的に埋め込んだ・・・。 今回は、メニューアイテ…

FrameLayout

FrameLayoutは、基本的にはビューを1つだけ配置するためのレイアウトで、2つ目以降のビューを配置すると上に重なって表示される・・・。FrameLayout | Android Developers逆に言うと、重ねて配置したい場合はこれを使うといい・・・。activity_main.xmlに、F…

Zinc #28 簡易的なHTTPリクエスト(AsyncTaskLoaderによる非同期処理)

非同期処理の練習をしたいので、とりあえずHTTPリクエストでソースを取得して表示してみる・・・。 (ソースの表示だったらわざわざHTTPで投げる必要はない・・・。単純にAsyncTaskLoaderの練習・・・。)まずmenu_main.xmlで、action_show_sourceを追加・・・…

Zinc #27 簡易的なWebフィルタリング(WebView.stopLoadingでロードを停止)

簡易的なWebフィルタリングをしてみる・・・。 前回、ロードされるリソースのURLがわかったので、今回は、ロードされるリソースが画像だったらロードを停止する・・・。こんな感じで、Jpeg、PNG、Gifだったらview.stopLoadingでロードを停止・・・。Yahooを…

Zinc #26 ロードされたリソースのURLを表示

jsやcssなどのスクリプト、pngやjpgなどの画像ファイルなど、どんなリソースがロードされているかを調べたい・・・。リソースがロードされた時、WebViewClientのonLoadResourceが呼ばれるので、こんな感じで、CustomWebViewClient.javaのonLoadResourceをオ…

Zinc #25 JavaScriptの有効化

そろそろいい加減JavaScriptを有効化する・・・。 (さんざんYahooで警告が出ていたので・・・。)といってもコードの修正は、WebViewTabFragment.javaの、これだけ・・・。これでYahooを見てみると、Yahooの警告がすっかりなくなって、滑らかなJavaScriptっぽ…

Zinc #24 ショートカットの作成

現在表示しているWebページのショートカットをホーム画面に作成する・・・。まず、menu_main.xmlは、メニューアイテムaction_make_shortcutを追加・・・。strings.xmlで、"ショートカットの作成"という表示名に・・・。MainActivity.javaでは、WebViewのwvか…

Zinc #23 PCサイトブラウザ

表示をPCサイトに切り替えるには、Webアクセス時のUserAgentをPCのブラウザ用にすればいい・・・。ちょっと古いけど、Androidブラウザの「パソコンサイト表示」のユーザーエージェント « kawama.jpここにあるUserAgent、 "Mozilla/5.0 (Windows NT 6.1; WOW6…

Zinc #22 URLバーでGoogle検索

URLバーでGoogle検索できるようにする・・・。URLバーに入力した文字列がURLか文字列(検索文字列)かを判定する方法はいろいろあるだろうが、もっとも緩い基準は「'.'(ドット)が含まれていない、または、' '(スペース)が含まれていれば検索文字列」という結論…

Zinc #21 タブの削除

タブの削除を実装するわけだが、やってみるとこれまでの課題の中では、今のところ一番難しかった・・・。FragmentTabHostやTabWidgetのremove系メソッドでは削除されなかったり、タブだけが消えてフラグメント側は消えていないように見えたり、別のタブを押…

Zinc #20 新しいタブの追加

新しいタブを追加する機能を実装する・・・。まずは、android:id="@+id/action_newtab_add"なるメニューアイテムを追加し、"新しいタブ"という表示名に・・・。MainActivity.javaは、"新しいタブ"を選ぶと、新しいタブが1つ追加される・・・。最初のタブが"…