ACTION_OUTSIDEが切り開くAndroidアプリ間連携の可能性:実業務でちゃんと使えるAndroidアプリ開発入門(1)(1/4 ページ)
本連載では、バージョンの違いに左右されないスタンダードなアーキテクチャで、セキュリティやパーミッション、テストのしやすさ、開発効率の向上などを考慮した、実業務で使えるAndroidアプリ開発のノウハウを提供していきます。初回は、連載の今後を紹介し、アプリ間連携でさまざまなことができるACTION_OUTSIDEイベントの使い方を解説します。
最新のAndroid 6に対応しつつ、実業務で使えるAndroidアプリ開発のノウハウを提供
本連載で目指すこと
今回から始まる本連載「実業務でちゃんと使えるAndroidアプリ開発入門」は、2008年12月から2015年まで約7年連載していた「Androidで動く携帯Javaアプリ開発入門」の後続となるものです。以前の連載同様、下記のことは守っていきたいと思います。
- 動作可能なサンプルアプリを提供し、動かしながら内容を理解できること
- サンプルの完全なソースコードが提供されること
- 画像をふんだんに用い、必要に応じて動画も利用し理解を助けること
本連載と以前の連載では、コンセプトにおいて以下のような変更点があります。
- 旬の話題(新しいAndroidのバージョンや、その新しいAPIなど)は取り上げない
以前の連載では、連載中にAndroid 4、5、6、Android Wearなどの機能一覧をまとめていましたが、今後はそうした特集記事は本連載とは別にまとめます。本連載では、新しいAPIにとらわれず、バージョンアップデートに左右されない基本となる部分の作り方を取り上げていきます。
Android 6が最新版ですが、Andrid 4.xもまだまだ現役です。本連載では現時点ではAndroid 4〜6で安定して動くアプリの作り方を解説します。
- ソースコードはGitHubで、動画はYouTubeで公開する
以前の連載では、ソースコードはZip形式で提供して、動画はFLVだったりMPEGだったりしましたが、本連載ではGitHubとYouTubeを用います。GitHubとYouTubeのチャネルのURLはそれぞれ以下の通りです。
- GitHub:https://github.com/satosystems/atmarkit-android
- YouTube:https://www.youtube.com/channel/UCTypNP4ZH5m1ywLc4fRcqIg
ソースコードは基本的に最新のAndroid Studioで生成したプロジェクトの形式とし、特別な理由がなければMinimum SDKはAndroid Studioのデフォルト設定とします。
また、ソースコードは分かりやすさを優先し、エラー処理や例外処理は省略することがあります。サンプルコードを流用したい場合は必要に応じて補ってください。本連載のサンプルコードのライセンスは全てMITです。ソースコード内に他者の実装を取り込んでいる場合は取り込み元のライセンスに従います。
- サンプルアプリをapk単体でQRコード付きで公開
これまではソースコードがあるため、apkは単体では公開していませんでしたが、すぐに手元のスマホにインストールできるようにQRコード付きでインストールできるようにします
実業務で使えるAndroidアプリ開発のノウハウを提供――今後の連載予定
連載の内容は現段階では以下のようなものを想定しています。バージョンの違いに左右されない、スタンダードなアーキテクチャで、セキュリティやパーミッション、テストのしやすさ、開発効率の向上などを考慮した、実業務で使えるAndroidアプリ開発のノウハウを提供していきます。
- Activity、Fragment、Viewおよびアプリのライフサイクルとコールバック
これらはAndroidアプリ開発における基本ではありますが、何となく曖昧なまま開発し続けてしまっていることも多いため、この機会にきちんと復習してもらいたいです。図、説明、ソースコード、動作するアプリが提供される予定なので、完全にマスターできると思います。
- アプリデータやシステムを守るために
アプリが守らなければならないデータというのは意外とたくさんあると思います。個人情報やユーザーデータ、システムやサービスにアクセスするためのパスワードやトークンなどが該当します。守らなければならないシチュエーションもさまざまですが、この回は悪意あるユーザーがアプリをクラッキングしようとしている、という想定での対策を検討してみようと思います。
- 開発効率を上げるadbコマンド10選
AndroidアプリはAndroid StudioなどのIDEを用いて開発すると効率がよいのですが、Android Studioが必須なわけではなくAndroid SDKと好みのエディタ、それとターミナルで開発を進めることも可能です。Android SDKには開発に必要なコマンドが実行ファイルとして含まれているのですが、この中でこの回ではadbコマンドにフォーカスを当てて、開発中に使用すると効率が上がるものを紹介していきます。
- Contextとは何か? その使い分け方は?
AndroidにはContextを引数に取るメソッドが多数存在します。ActivityがContextだから、ついついどのメソッドにもActivityのインスタンスとして「this」を渡したりしていませんか? または常に「Application#getApplicationContext()」で取得したApplicationContextを渡していますか? この回ではContextとは何か、またどのContextを使用すべきかを学習していきます。
- メモリリークを防ぐために
AndroidアプリはJavaで実装されているため、メモリリークなんて起こらない、ということならよかったのですが、実際はそんなことはありません。Androidアプリのメモリリークはちょっとしたことで起こります。メモリリークが起こる仕組み、その検出方法、対応方法を習得し、長時間安定して動作するアプリが作れるようになりましょう。
- Android 6で変更されたパーミッションモデルに対応する
従来のアプリは、インストール時に必要なパーミッションがユーザーに提示され、合意を経てインストールされます。一度許可したパーミッションは個別に許可を取り消せませんでしたが、Android 6からはこれが可能になります。ユーザーによってパーミッションが取り消された場合、アプリはどのような動作になるのか、どのように振る舞わなければならないかを、サンプルを通して学んでいきます。
今回は、本連載のコンセプトの一例として、ACTION_OUTSIDEイベントの可能性について取り上げます。
ACTION_OUTSIDEとSYSTEM_ALERT_WINDOWで一風変わった常駐アプリを作る
さて、連載第1回目で取り上げるテーマは、ACTION_OUTSIDEとSYSTEM_ALERT_WINDOWを組み合わせた常駐アプリです。
ACTION_OUTSIDEイベントは公式レファレンスの説明が不十分であるため、つい見落とされがちで活用されていないイメージかもしれません。しかし、実は極めて有効に利用することができる優れたイベントです。ここでは、このイベントの具体例をサンプルアプリで示して、このイベントの可能性を提示してみます。
百聞は一見にしかず、まずは以下の短い動画を見てください。
この常駐アプリは、「ブラウザ上でトリプルタップを検出したら、ホーム画面を表示する」という動作をします。
ACTION_OUTSIDEを使いこなすと、何ができるようになるのか
今回のサンプルはブラウザからホーム画面を起動するようにしていますが、以下のような応用が可能です。
- ブラウザに限定せず、任意のアプリを選択可能
- アプリを起動するだけにとどまらず、任意の処理を実行可能
- トリプルタップ以外のアクションに変更可能(制限については後述)
つまりは以下のような応用が可能になります。
- 任意のアクションでTwitterとFacebookを行ったり来たりする
- Wi-FiのON/OFFやマナーモードなどをいつでも素早く切り替えたい
- 任意のアクションで任意の文字列をいつでもクリップボードにコピーする
- 任意のアプリで任意のアクションを行うと、メニュー的なViewを表示する
この仕組みのポイントとなるのが、他のアプリがインタフェースを提供していなくても対象のアプリを拡張できてしまうところです。
サンプルアプリのダウンロード
サンプルアプリは以下よりダウンロードしてください。
サンプルアプリのソースコード
今回のサンプルのソースコードは以下にあります。
- git@github.com:satosystems/atmarkit-android.git
繰り返しますが、本連載のソースコードは全てGitHubで公開していきます。記事本文では説明し切れない部分もあるため、気になる部分はソースコードを確認してみてください。今回の実装はActivityとService合わせて200行程度にまとめてあり、非常にコンパクトで理解もしやすいでしょう。
それではアプリの詳細を説明していきます。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 「Android N」の開発者向けプレビューが公開
米グーグルは、Androidの次期版「Nリリース」の開発者向けプレビューを公開した。 - JVMとAndroid用のオープンソースプログラミング言語「Kotlin 1.0」がリリース
JetBrainsが主導して開発を進めるJVMとAndroid用のオープンソースプログラミング言語の正式版がリリース。既存のコードやインフラとの相互運用性を重視した実用的なプログラミング言語だという。 - Androidアプリ向け統合開発環境「Android Studio 2.0」β版が公開
米グーグルが、Androidアプリ向け統合開発環境(IDE)の最新版「Android Studio 2.0」のβ版を発表した。