BasicContactables – Android 4.3


20130731basic_contactables_name

Android 4.3 にて Contacts Provider が強化された。
Contacts Provider の新しい問合せ先として Contactables.CONTENT_URI が追加された。
氏名や電話番号やメールアドレスなどを含めて、連絡帳を効率的に検索します。

補足
従来は、氏名、電話番号、メールアドレスを同時に検索することが出来なかった。
問合せ先が、氏名、電話番号、メールアドレスで異なっていた。
それぞれ、Contacts.CONTENT_URIPhone.CONTENT_URIEmail.CONTENT_URI

サンプルコード
SDKにサンプルコードが同封されています。
なぜか AOSP(Android Open Source Project) では見つからなかった。
/<sdk>/samples/android-18/content/contacts/BasicContactables

試してみました
(1) 連絡帳に適当に登録する
20130731basic_contactables_list

(2) アプリから検索すると、該当する項目が表示される。
20130731basic_contactables_name20130731basic_contactables_email20130731basic_contactables_phone

サンプルコードの簡単な説明
2つのソースがあります。
(1) MainActivity.java
メインの Activity です。
(2) ContactablesLoaderCallbacks.java
連絡帳を検索する Loader です。

関連
Android 4.3 のサンプルコード
ContactManager
 従来の ContactsContract API を使って、連絡帳に問い合わせするサンプルコード


AppRestrictions – Android 4.3


20130730app_restrictions_setting

Android 4.2 から、1台の端末を複数の人で共有する マルチユーザ がサポートされています。
Android 4.3 から User Restriction がサポートされました。
ユーザ毎に利用できるアプリやコンテンツを制限する、いわゆるペアレントコントロールです。

SDKにサンプルコードが同封されています。
なぜか AOSP(Android Open Source Project) では見つからなかった。
/<sdk>/samples/android-18/legacy/AppRestrictions/

試してみました
User と Restricted Profile の違いが分からず、少し操作に迷いました。
当初は User に制限を掛けるものと思っていました。
しかし、User には制限はかかりません。
Restricted Profile という属性を使用します。
Profile という名前ですが、制限付きの特別なユーザという位置づけです。

(1) マルチユーザ環境 を設定します。
20130630multi_user_login

(2) User Restriction を設定します。
ロック画面から、Owner でログインします。
Settings -> Users を開きます。
Restricted Profile の作成を選びます。
ロック画面の解除方法を設定しろと言われます。
20130730app_restrictions_unlock

(3) ロック画面になります。
上記で設定した解除方法でログインします。
Settings -> Users を開きます。
20130730app_restrictions_users

(4) New Profile を設定します。
App Restrictions Demo を選択します。
このデモでは、3つの設定項目があります。
– Test boolean type
– Test choice type
– Test multi-select type
20130730app_restrictions_setting

(5) ロック画面にします。
Restricted profile でログインします。
App Restrictions Demo を開く。
設定画面で設定した3つ項目の値が表示されます。
このデモでは、表示されるだけで、特に何もしない。
なお、Owner や 一般ユーザのときは、N/A が表示されます。
20130730app_restrictions_app

注意
Restricted profile の設定ボタンを押すとヌルポで落ちます。
NullPointerException at com.android.settings.users.CircleFramedDrawable
20130730app_restrictions_error

サンプルコードの簡単な説明
Android 4.3 から追加された RestrictionEntry を使っています。

4つのソースがあります。
(1) MainActivity.java
制限の対象となるアプリです。
(2) GetRestrictionsReceiver.java
設定画面から呼び出されるレシーバーです。
制限の内容を設定します。
(3) CustomRestrictionsActivity.java
設定のカスタム画面が必要なときに、上記の Receiver から呼び出されます。
下記の Fragment を呼んでいます。
(4) CustomRestrictionsFragment.java
制限の内容を設定します。

動画による解説
DevBytes: Restricted Profiles in Android 4.3
YouTube Preview Image

関連
Android 4.3 のサンプルコード


BluetoothLeGatt – Android 4.3


20130729bluetooth

Android 4.3 から Bluetooth 4.0 がサポートされました。

サンプルコードが公開されています。
BluetoothLeGatt.java

試してみました。
残念ながら BLE is not supported で終了します。
エミュレータでは Bluetooth がサポートされれていなので、仕方ないですね。

サンプルコードの簡単な説明

Android 4.3 から追加された BluetoothGatt を使っています。
Gatt とは、Generic Attribute Profile らしい。
Bluetooth 3.0 までを Classic プロトコル、4.0 を Gatt プロトコル と称するようです。

4つのファイルがあります。
(1) BluetoothLeService.java (サービス)
(2) DeviceControlActivity.java (メイン)
(3) DeviceScanActivity.java (デバイス一覧)
(4) SampleGattAttributes.java (属性)

BluetoothChatと同じような構成です。
– BluetoothChat.java (メイン)
– BluetoothChatService.java (サービス)
– DeviceListActivity.java (デバイス一覧)

動画による解説
DevBytes: Bluetooth Low Energy API in Android 4.3
YouTube Preview Image

関連
Android 4.3 のサンプルコード

参考
Bluetooth – wikipedia
GENERIC ATTRIBUTE PROFILE (GATT) – bluetooth.org
Bluetooth Low Energy – android developers


Android 4.3 のサンプルコード


SDK にはサンプルコードが入っています。
Android 4.3 から構成が大きく変わりました。
従来の Eclipse 用から Android Studio 用に変わりました。
従来の Eclipse 用のものは、legacy というディレクトリに移動しました。

今回、22個ほど追加されています。
Android 4.3 (API 18) 用は、3個です。

connectivity
(1) BasicNetworkDemo – API 8
(2) BasicSyncAdapter – API 7
(3) NetworkConnect – API 8

content
★ (4) BasicContactables – API 18

input
(5) BasicGestureDetect – API 8
(6) BasicMultitouch – API 8

media
(7) BasicMediaRouter – API 17

security
(8) BasicAndroidKeyStore – API 8

testing
(9) ActivityInstrumentationSample – API 7

ui
(10) BasicAccessibility – API 11
(11) ActionBar DoneBar – API 14
(12) ActionBarCompat Basic – API 7
(13) ActionBarCompat Styled – API 7
(14) ActionBarCompat ListPopupMenu – API 7
(15) ActionBarCompat ShareActionProvider – API 7
(16) BorderlessButtons – API 14
(17) CustomChoiceList – API 3
(18) BasicNotifications – API 8
(19) HorizontalPaging – API 11
(20) TextSwitcher – API 4

legacy
★ (21) AppRestrictions – API 18
★ (22) BluetoothLeGatt – API 18
– AccelerometerPlay – API 5
ActionBarCompat – API 14
AndroidBeamDemo – API 14
– ApiDemos – API 4
AppNavigation – API 14
– BackupRestore – API 8
– BluetoothChat – API 6
– BluetoothHDP – API 14
ContactManager – API 5
– CrossCompatibility – API 3
– CubeLiveWallpaper – API 7
HelloEffects – API 14
– HoneycombGallery – API 11
– JetBoy – API 3
KeyChainDemo – API 14
– MultiResolution – API 3
– NotePad – API 11
– RandomMusicPlayer – API 7
– SampleSyncAdapter – API 8
– SearchableDictionary – API 7
– SipDemo – API 9
– Snake – API 3
– Spinner – API 3
– SpinnerTest – API 3
– TicTacToeMain – API 8
ToyVpn – API 14
TtsEngine – API 14
– VoiceRecognitionService – API 8
VoicemailProviderDemo – API 14
– WeatherListWidget – API 11
WiFiDirectDemo – API 14
WiFiDirectServiceDiscovery – API 16
– Wiktionary – API 3
– WiktionarySimple – API 3
– XmlAdapters – API 8
– NotePadtests – API 10
– RenderScript HelloCompute – API 14
– SpellChecker HelloSpellChecker – API 14
– SpellChecker SampleSpellCheckerService – API 14
– USB AdbTest – API 12
– USB MissileLauncher – API 12

参考
Android サンプルコード – ソフトウェア技術ドキュメントを勝手に翻訳


Android 4.3 の SDK に更新した


20130727sdk18

Android 4.3 ( API Level 18 ) が公開されました。
Eclipse を起動して、ウィンドウ -> Android SDK Manager を開きます。
Android 4.3 が表示されので、インストールします。

ヘルプ -> 更新の確認 をします。
ADT 22.0.4 がインストールされます。

念のためキャッシュをクリアします。
eclipse -clean

エミュレータに Nexus 10 が追加されましたが。
私の環境では、うまく起動できませんでした。
起動の途中でエラーになっているようです。

20130727avd_nexus1020130727avd_nexus10_logcat


Android 4.3 発表


20130725android43

Android 4.3 が発表されました。
コードネームは「Jelly Bean」のままということで、大幅な機能追加はなく、性能改善がメインという感じです。

技術的な注目点は、3つくらいですね。

(1) Bluetooth 4.0
BLE (Bluetooth Low Energy) と Bluetooth Smart Ready に対応した。
これで iPhone 向けの BLE ガジェットが Android でも使えるようになりますね。
Bluetooth AVRCP 1.3 にも対応した。曲名などのメタ情報が取得できるようです。

(2) OpenGL ES 3.0
GLSL ES シェーディング言語が新版になった。
ETC2/EAC テクスチャ圧縮が標準機能として提供された。
ビジュアル効果やテクスチャレンダリングが向上した。

(3) Restricted Profiles
ペアレンタルコントロールが追加された。

参考
Android 4.3、まずはNexus 4、7、10に今日から“ローリングアウト”
Android 4.3 “Jelly Bean”発表、Bluetooth SmartやOpenGL ES 3.0に対応


2013年7月 日本Androidの会 定例会


20130723japan_android_group_2

2013年7月23日(火)に 日本マイクロソフト本社 で開催された 日本Androidの会の定例会 にスタッフとして参加しました。

マイクロソフトは、WindowsPhone を販売しています。
Android とは競合相手になるので、通常ならば会場の提供を断られるのだろうが。
特に条件をつけずに会場を貸して頂きました。度量の広い会社ですね。
この数年は、オープンソースのコミニュティに積極的に関わってきており、悪の帝国というイメージを払拭しつつあります。

20130723microsoft

■ 日本Androidの会の活動方針
日本Androidの会 コミュニティ運営委員長 / 石塚宏紀
今年度より、日本Androidの会のコミュニティ運営委員長が、安生さんから石塚さんに交代しました。
今後の活動方針が紹介されました。
次回の大きなイベントとして、10月20日(日)に電機大学にて ABC (Android Bazaar and Conference) を開催します。

■ アンドロイドで変わった携帯電話
NPO日本androidの会 理事長 / 嶋是一
今年度より、NPO日本Androidの会の理事長が、丸山さんから嶋さんに交代しました。
日本Androidの会の創設時から振り返り、今 Android で起こっていることが紹介されました。
第三のスマホOSと呼ばれる Tizen や FireFoxOS の特徴を、Android や iPhone と比較して解説されました。

■ スマートフォン アプリケーションのバックエンド構築
Microsoft Corporation / 佐藤直生
Windows Azure を使ったスマホ用のクラウド環境の構築について解説されました。
クラウドサービスは、PCを対象としたものから、MBaaS (Mobile Backend as a Service) と呼ばれる スマホを対象としたものに移行しつつあります。
Azure と Android を連携したデモが紹介されました。

■ せっかく作ったアプリを埋もれさせないために
Webメディア運営者 / 染谷昌利
染谷さんは「ブログ飯」を出版されたばかりです。
Androidとの関わりや、スマホアプリの宣伝方法などについて、講演されました。


ちっちゃい~の


20130722titchaino_flashaing

昨日の Fablab Kannai は Arduino がテーマでした。
参加者のみなさんが Arduino の使い方を実習しているときに、
私は ちっちゃい~の をハンダ付けしていました。

ちっちゃい~の は、AVR マイコンと マトリックスLED が一体になった Arduino 互換ボードです。
1年前の Make で購入してから、タンスの肥やしになっていました。
今回は、Arduino の勉強会ということで、掘り出してきました。

ハンダ付けは2時間ほどで終わりました。
20130721fablab_titchaino_parts_220130721fablab_titchaino

失敗したところが一つあります。
書き込み用の6Pヘッダピンが少し長くて、マイコンとぶつかって、マイコンが浮いてしまった。
さらに、マイコンの上にかぶさるマトリックスLEDの浮いてしまった。
最初に全部の部品の噛み合わせをみておけばよかった。
20130722titchaino_side_b20130722titchaino_side_a

電源をつなぐと、インベーダーが表示されます。
次は、Arduino への書き込みですが、昨日はうまくいかなかった。
何か表示されるのですが、意図した絵になりません。

気を取りなして、プログラムを最初からやり直してみたところ、うまくいきました。
ikkeiplexing というライブラリを使いますが、同じ名称で2種類あります。
1つはちっちゃい~の用で、もう一つは ikkeiplexing シールド用です。

次は、LEDを電光掲示板に見立てて文字を出します。
英文字はそのまま書けばいいのですが、カタカナとひらがなは文字コードを指定します。
文字コードが分からなかったので、ライブラリのプログラムを読んでみました。
基本は8ビットJISです。
英文字とカタカナはこの配置とおりです。
ひらがなは隙間に埋め込まれています。
サンプルにある font_check を試すと、英文字、ひらなが(前半)、カタカナ、ひらなが(後半) という順番で表示されます。
20130722titchaino_code

ということで、電光掲示板も無事完成しました。
20130722titchaino_flashing_2

補足
ちっちゃい~の は ガリレオセブン から購入できます。

YouTube Preview Image

自分でつくるArduino – FabLab Kannai


20130721fablab_meeting

2013年7月21日、FabLab Kannai で行われた 自分でつくるArduino にスタッフとして参加した。

Arduino をハンダ付けする実習します。
– Arduino 互換ボード LIBLO AVR を自分ではんだづけして作成します。
– 完成したら簡単なプログラムを書き込んでみます。
20130721fablab_making
20130721fablab_libro_parts
20130721fablab_libro

私は ちっちゃい~の をハンダ付けしていました。
AVR マイコンと マトリックスLED が一体になった Arduino 互換ボードです。
20130721fablab_titchaino

なお、この日は参議院選挙でした。朝 投票してきました。
20130721vote


LEGO マインドストーム を公開しました


201307013mindstorm_logo

「LEGO マインドストーム」を Google Play に公開しました。
Android 端末から LEGO Mindstorms NXT を操縦するコントローラです。

このアプリは、2年前にマインドストームを購入したときから、開発を開始しています。その後、徐々に改良してきました。
もう少し機能を追加して、ソースコードを奇麗にしたら、アプリを公開しよう、思いながら、延ばし延ばしになっていました。

明日開催される Google Demo Party にマインドストームを展示します。
これを機会に、Google Play に公開しました。

マインドストームは、7年前から市販されているロボットなので、Google Play には関連アプリが30個ほど公開されています。
今回のアプリの特徴は、ジョイステックコントローラー から操縦できることです。
Android 4.1 (API 16) から追加された InputManager を使っています。
ひとまず、世界初みたいです。

詳しい使い方は LEGO マインドストーム をご覧ください。

関連
アンドロイド から マインドストーム を動かす
アンドロイド の傾きセンサで マインドストーム を動かす
MINDdroid – Shooterbot
入力デバイスの一覧を取得する