サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
アメリカ大統領選
techbooster.org
Androidで常駐型アプリケーションを作成する場合に便利なServiceについてライフサイクル・使い方を解説します。サービスの利用例はステータス通知(Notification)を変化させる等をご確認ください。Servi […]
日付を入力するためのWidgetでDatePickerクラスがあります。このクラスはAPI Level 1から存在していますが、Honeycomb(API Level 11)で機能が追加されました。 今回はその変化点について説明します。 DatePickerは日付を入力するためのWidgetですが、API Level 10まではスピナー(Spinner)で日付を選択するものでしたがが、API Level 11からはCalendarViewクラスが追加されたこともあり、DatePickerでカレンダーを表示して日付を選択することが可能になりました。 3.0以前 3.0以降 それでは続きで説明します。 DatePickerクラス DatePickerクラスを利用する方法は以前と同様です。 例えばレイアウトファイルに記述する場合は以下のようになります。 <?xml version="1.0" e
GridViewはデータをグリッド状(格子状)に表示するためのビューです。 画像などのデータをサムネイルのように表示したい場合に利用できます。 詳細は続きからどうぞ。 GirdViewで扱うデータはBaseAdapterを継承したクラスを使って取得します。 以前紹介したGalleryと同じような手順になりますので、併せてご覧下さい。 レイアウトファイル まず、レイアウトファイルでGridViewを定義します。 <?xml version="1.0" encoding="utf-8"?> <GridView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/myGrid" android:layout_width="fill_parent" android:layout_height="fi
Android 3.0(Honeycomb)ではViewクラスに位置やサイズを動的に変更できる便利なメソッドが追加されました。 詳細は以下から。 Android 3.0(Honeycomb)で追加されたViewの位置やサイズを動的に変更するためのメソッドは7種類あります。
「アプリケーションのヴァージョン情報を設定する」の記事ではアプリケーションのバージョンを取得する方法の説明がありました。 PackageInfoクラスからバージョンを取得していました。PackageInfoクラスにはバージョン以外にも情報を取得することは可能ですが、2.3からは新たに以下の情報が取得できるようになりました。 インストール日時:firstInstallTime 更新日時:lastUpdateTime 以下はサンプルコードです。 PackageInfoクラスに追加されたメンバ 上記にもありますようにSDK2.3(API9)からPackageInfoクラスに新たにfirstInstallTime、lastUpdateTimeが追加されました。 共にPublicのフィールドで、long型になります。値はUTC(1970年1月1日午前0時からの経過時間)です。 getPackageM
Androidでは、Activityの背景を透明にすることで、透明な画面を作成することが可能です。 画面を透明にすることで、ダイアログのみ表示されているかのような画面や、まるで画面遷移していないかのように振る舞うことができます。 それでは続きをどうぞ Activityを透明にする では早速、Activityを透明にしてみましょう。 サンプルコードはこちらをご覧ください。 AndroidManifest.xmlを開き、透明にしたいActivityのtheme属性に、次のように定義します。 android:theme="@android:style/Theme.Translucent" 追加する位置は<activity>タグ内ですのでご注意下さい。 Theme.Translucentは、Activiyを透明にするために、デフォルトでAndroidにパッケージされているテーマです。 ですので、ア
WindowsPhone 7アプリケーション作成にあたって、スライドショーやタイマによる情報更新など 定期的に表示内容を変更したい場面が多々出てきます。 今回は定期的に表示内容(UI)を変更する方法としてDispatcherTimerを紹介します。 定期実行には3種類の方法があります。メリット、デメリットは以下のとおりです。 System.Windows.Threading.DispatcherTimer メリット:UIへのアクセスが可能 System.Timers.Timer メリット:3種類の中で最も時間に正確 デメリット:UIへのアクセスは相応の処理が必要 System.Threading.Timer メリット:System.Timers.Timerよりも軽い デメリット:利用するにあたっての設定が多い 今回紹介するDispatcherTimerは他のタイマーと違いUIへのアクセスが
AndroidではViewクラスも拡張して独自機能を追加することが可能です。カスタマイズのサンプルとして、Viewにお絵かきできる機能を追加してみます。 今回、タッチ座標の取得にはonTouchEventを使っています。onTouchEventについては以前の記事タッチイベントを取得する(onTouchEventとMotionEvent)を参考にしてください。 独自Viewの作成方法は続きをどうぞ。 javaファイルの作成 Viewを継承するクラス名に応じてファイル名を決定します。 CustomView.java package org.jpn.techbooster.sample.customViewActivity; class CustomView extends View { /* 省略 */ } このとき、Viewのコンストラクタは3種類のいずれか、もしくはすべてを作成しておく必
java.util.zipパッケージを使えばAndroidアプリケーションからZIPファイルを作成することができます。 たとえばアプリケーションで扱うデータをZIPファイルに圧縮して外部ストレージに保存するというような用途で利用すると良いでしょう。 詳細は続きからどうぞ。 クラスとメソッド ZIPファイルの作成には下記のクラスとメソッドを使います。 java.util.zip.ZipOutputStream : ZIPファイル形式でファイルを書き込むための出力ストリーム java.util.zip.ZipEntry : ZIPファイルエントリを表すためのクラス エントリの設定 ZIPファイルはそのZIPファイルに含まれるファイルやディレクトリの情報をエントリと呼ばれる形で保持しています。 エントリは上記のjava.util.zip.ZipEntryクラスで作成することができます。 ZipE
STREAMモードとSTATICモード AudioTrackクラスは以下の2つのモードで動作します。 STREAMモード: メモリに収まらない大きな音声データを再生したい場合、音声データを一定量ずつ、逐一ハードウェアに出力します。 STATICモード: メモリに収まる程度の小さな音声データは予めメモり領域上に置いておいて、それを必要なときにハードウェアに出力します。 サンプルコード 以下はAudioTrackクラスを使ってSDカードに保存してあるWAVEファイルを鳴らすサンプルです。 WAVEファイルはサンプリングレート44100Hz、オーディオチャネル2ch、16bitのものを使っています。 大きなバイトデータになりますので、STREAMモードを使います。 @Override public void onCreate(Bundle savedInstanceState) { super.
Androidのアプリケーション・コンポーネントの一つ、Activity(アクティビティ)について説明します。 Activityの特徴は、視覚的なUIを伴うアプリケーションということです。 コンポーネントにはActivityの他に、3つあり、まとめると以下のようになります。 ・視覚的なUIを伴うActivity ・持続的に実行されるService ・システム、他のアプリからの連絡を受け取るブロードキャストレシーバ ・アプリケーション間のデータ交換のためのコンテンツプロバイダ 以下は、Android SDKより、HelloWorld と SpriteTextのスクリーンショットです。 これら難易度が違うデモにも、Activityが関係しています。 「Activityはコンポーネント」と前述で表現しました。これはAndroidのアプリケーションは複数のコンポーネントから構成することが出来るため
CameraPreview では、CameraPreviewのソースコードを見てみます。 特に複数のカメラを制御している部分を抽出して紹介します。 まずはonCreateメソッドです。 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // ウィンドウタイトルを非表示に設定 requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); // プレビュー画面の作成 mPreview = new Preview(this); setContentView(mPreview); // 利用
Android3.0からNumberPickerという数値入力用のViewが追加されました。 サンプルはこちらに用意していますので、SVNなどでダウンロードして下さい。 詳細内容は以下から。 NimberPicker NumberPickerは数値を入力するためのViewです。 NumberPickerでは、TextEditのようにキーボードから入力できる入力部と入力部の上下に数値を加減できるボタンが付いています。 また、setOnValueChangedListenerを使用することで数値が変化する度に処理を入れることも可能です。 入力値の最大値と最小値を設定する NumberPickerでは入力値の最大値と最小値を設定できます。 設定用のメソッドは以下の表を参照して下さい。
GoogleはAndroid端末やiOS端末で利用可能なGoogle音声検索をリリースしています。 今回はこのGoogle音声検索にも利用されている音声認識をアプリから利用する方法を説明したいと思います。アイデア次第でいろいろと活用出来るのではないでしょうか。 それでは続きで説明します。 RecognizerIntent 音声認識はRecognizerIntentクラスを利用します。 このRecognizerIntentクラスに定義されてているACTION_RECOGNIZE_SPEECHのIntentを発行して音声認識のActivity(見た目はダイアログですが)を起動させます。 そしてその結果をonActivityResultメソッドで受け取って任意の処理を行います。 音声認識Activityの起動 まずはIntentの生成部分です。 Intent intent = new Inten
レートが変更された事を検出する レートが変更された事を検出するには、OnRatingBarChangeListenerを使います。 OnRatingBarChangeListenerでレートが変更された事を検出し、OnRatingBarChangeListenerのonRatingChangedメソッドを使ってレートが変更された際の処理を記載します。 レートが変更された事を検出するには、イカのようにします。 ■src/RatingBarSampleActivity.java RatingBar rb; rb.setOnRatingBarChangeListener(new OnRatingBarChangeListener() { @Override public void onRatingChanged(RatingBar ratingBar, float rating, boolean
Android 4.0では新たに追加されたNetwork Usage機能によってアプリケーションが使用するネットワークのトラフィック量をユーザが把握、及びコントロールできるようになりました。 ユーザは端末にインストールされている各アプリケーションごとにネットワークの使われ方を細かく確認したり設定することができます。たとえば、使用するトラフィック量の上限を設定したり、バックグラウンドデータの使用を無効にするといったことができるようになります。 また、このNetwork Usage機能ではアプリケーションにネットワーク設定画面が備わっている場合、 Network Usageの画面から直接呼び出すことができます。 上の図のように、ユーザは各アプリのトラフィック量を視覚的に把握することができるので、 トラフィック量の多いアプリを見つけた場合は、そのアプリの設定画面からネットワークの設定を 行うとい
Android4.0では、カメラ機能を無効にすることができます。 例えば工場や職場のオフィスなどでスマートフォンを使用する場合、カメラで撮影すると情報漏洩に繋がるような現場では、カメラ機能をオフにすることで、情報漏洩を未然に防ぐことができます。 今回は、ボタンを押すとカメラ機能がオフになるサンプルアプリを例に、APIを解説していきます。 図:デバイス管理者権限切り替え画面(左)、サンプルアプリ画面(右) 図:カメラ無効時のカメラアプリ起動時画面 ポイントとしては次の点です。 デバイスの管理権限を有効にする セキュリティーポリシーの宣言 setCameraDisabledメソッドにてカメラを無効にする それでは続きをどうぞ DeviceAdminReceiverを継承したクラスの作成 カメラを無効にするには、デバイスの管理者権限をアクティブにする必要があります。 まずはそのための準備として、
今回はJPEGファイルのExif情報を取得する方法を説明します。 Exifのフォーマットを知っていればバイナリデータを解析して取得することも可能ですが、Androidではandroid.media.ExifInterfaceクラスを使うことで簡単に取得することが可能です。 ExifInterfaceクラスはAndroid2.0(API5)から追加されたクラスです。さらに、Android2.2(API8)、Android2.3(API9)、Android3.0(Honeycomb)でそれぞれ取得出来るExifのタグが増えています。 また、JPEGファイルの中にサムネイル画像が入っていれば取得することも可能です。 それでは続きで説明していきます。 コンストラクタ ExifInterfaceクラスのコンストラクタは引数にファイル名を与えます。IOExceptionが発生する可能性があるのでtry
application configurationとは、ヘルスデバイスとの接続に利用されるアプリケーション設定で、サードパーティ、開発者がヘルスデバイスとBluetoothで通信するための状態通知コールバック設定、設定名などが格納されています。 接続するためのサンプルコードは以下のとおりです。 ※Android 4.0およびヘルスデバイスを入手できていないため、本記事でのサンプルコードは、概要を理解するためのコードスニペットとお考えください。実際に試すには修正が必要です。 ヘルスデバイスの検出処理 以下はヘルスデバイスの検出と切断に合わせて、ヘルスデバイスを管理するためのBluetoothHealthインスタンスを取得するサンプルコードです。 ここでは、BluetoothAdapter(Bluetooth接続のためのアダプタ)からヘルスデバイス接続通知を受け取り、BluetoothHeal
Android4.0(ICS)から、Androidは所有者の個人情報(UserProfile)を持つようになりました。 UserProfileは、Peopleアプリケーションを初めて起動した時に登録を促されます。 スクリーンショットはPeopleアプリケーションでのUserProfile登録画面 本エントリでは、この新たに追加されたUserProfileを読み出す方法を紹介します。 紹介するAPI一覧はこちら 新規API概要
AndroidManifest.xmlで使う<uses-feature>要素は、アプリケーションを使う前提となるデバイス、ソフトウェアの機能を指定します。カメラアプリであればハードウェア的にカメラが搭載されていないAndroid端末へインストールされても使うことができません。未対応デバイスへのインストールを防ぐための要素です。 Androidマーケットでは、Android端末のデバイス、ソフトウェアの機能を確認して<uses-feature>要素を元に事前にアプリケーション一覧をフィルタリングしてくれます。「ダウンロードしたが利用できない」を防ぐためにも、必須デバイス/機能がある場合は記載したほうがよいでしょう。 Android 2.3では以下の<uses-feature>要素が増えました。 NFCやVoIP、5本指タッチなど、非常にたくさんの機能が追加されたことがわかります。 andro
サンプルコード Canvasの最大サイズを取得する ICSから新たに、設置できるCanvasの最大サイズを取得することができるようになりました。 具体的には、イカのようにします。 ■src/GraphicsSample.java //Canvasの設定できる最大の高さ Int maxHeight = canvas.getMaximumBitmapHeight(); //Canvasの設定できる最大の幅 Int maxWidth = canvas.getMaximumBitmapWidth(); Canvasの最大の高さを取得するにはCanvasクラスのgetMaximumBitmapHeightメソッドを、最大の幅を取得するにはCanvasクラスのgetMaximumBitmapWidthメソッドを使用します。 もし新たに設置しようとしているビットマップの高さ、幅が上記コードのmaxHei
それでは、つづきをどうぞ。 タブ表示を行う ActionBarにタブ表示を行う為に必要なことは、以下の2つです。 ・ActionBarクラスのaddTabメソッドを呼び出す。 ・ActionBarのNavigarionModeをNAVIGATION_MODE_TABSに切り替える。 以下サンプルコード、9〜11行目でActionBarクラスのaddTabメソッドを呼び出し、タブを追加しています。 続いて、15行目でNavigationModeをNAVIGATION_MODE_TABSに切り替えています。 public void onCreate(Bundle savedInstanceState) { //省略... // action bar を取得する final ActionBar mActionBar = getActionBar(); // ActionBarにタブを表示する /
Androidで音声ファイルを再生するためにはMediaPlayerクラスを使います。 MediaPlayerクラスが提供するメソッドを利用することで、簡単に音声ファイルを再生することができます。 詳細は続きからどうぞ。 まず、再生したい音声ファイルをrawディレクトリ以下に保存します。 今回はsample.mp3という音声ファイルを作成しました。 (rawディレクトリはデフォルトで存在しないので、ディレクトリも新たに作成します) 次にレイアウトファイルですが、今回は上記スクリーンショットのように 再生/停止用のボタンを1つだけ用意して、音声ファイルの再生中/停止中のチェックをして ラベルを動的に変更します。 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.
Android 4.0(targetSdkVersionもしくはminiSDKVersionが14以上)ではアプリケーションのデフォルトテーマが、Theme.DeviceDefaultに統一されました。 今まででも未指定の場合はTheme.Black、Android 3.0以降であればTheme.Holoなどが適用されていましたが、Android端末ごとに適用されるテーマがカスタマイズされているなど、アプリケーション側ではレイアウトを制御しにくかったのが現状です。 今回、Android 4.0からTheme.DeviceDefaultが追加されたことで、端末メーカーが、自分の端末ごとにテーマを用意することになります。アプリケーションでThemeを指定しなければTheme.DeviceDefaultが適応されます。ユーザーにとっては使い慣れた端末のテーマが適応されることになり、統一感が向上し
Androidでは以前からFaceDetectorクラスを用いることで画像に対して顔検出を行うことが可能でした。Android4.0(ICS)からは、画像(静止画)だけでなく、カメラのプレビュー(動画)に対して顔検出を行うことが新たに可能となりました。 実際に顔検出の処理を行う方法は以下の通りです。1から3の処理を記述する必要があります。 FaceDetectionListenerを実装(onFaceDetectionメソッドでCamera.Faceクラスが渡ってくるので必要な処理を記述) CameraクラスにFaceDetectionListenerを登録 Cameraクラスに検出開始を指示 顔が検出されるとFaceDetectionListenerのonFaceDetectionメソッドが呼ばれる カメラの基本的な使い方は「カメラの使用方法(1)」を参照してください。 ※静止画の顔検出
アクションバーはAndroid3.0(Honeycomb)で導入された、タイトルバーにMENUやタブ、検索ウィジェットなど、 表示中の画面で操作できることを可視化するための領域です。 Android4.0(ICS)のバージョンアップでは、タブレット端末、携帯端末のどちらにも対応するため、 アクションバーの表示方法が拡張されました。 以下二つのスクリーンショットの様に、 画面解像度の広いタブレット端末の場合は上部にMenuItemを表示し、解像度の狭い携帯端末の場合には下部にMenuItemを表示するよう、アクションバーを上下に分ける事ができます。 本エントリでは、アクションバーを画面下部にも表示する方法を紹介します。 TechBoosterで過去紹介した、ActionBarに関連する記事はこちらです。 使用方法のおさらいなどにご利用くださいませ。 ActionBarにMENUを表示する A
jQuery MobileとはJavaScriptフレームワークであるjQueryのプラグインであり、モバイルサイト/Webアプリケーション構築のためのフレームワークです。 HTML、CSS、JavaScriptを用いて、ブラウザ上でネイティブアプリのようなユーザインタフェースを実現することができます。 jQuery Mobileの特徴としては多くのプラットフォームをサポートしていることがあげられます。 iOS(iPhone、iPad)、Android、WindowsPhone7の標準ブラウザやOpera MobileやFirefox Mobileなどのサードパーティのブラウザに対応していることはもちろんのこと、BlackberryやPalm WebOSにも対応しています。 また、デスクトップ用のブラウザ(Chrome Desktop、Firefox)にも対応しています。 ※対応しているブ
以下のサンプルコードでは各ライフサイクルで通知用メソッドを実行しています。 ActivityLifecycleCallbacksSampleActivity.java 〜省略〜 @Override protected void onDestroy() { super.onDestroy(); if(mCallbacks != null){ mCallbacks.onActivityDestroyed(this); } } @Override protected void onPause() { super.onPause(); if(mCallbacks != null){ mCallbacks.onActivityPaused(this); } } @Override protected void onResume() { super.onResume(); if(mCallbacks
次のページ
このページを最初にブックマークしてみませんか?
『Tech Booster』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く