Android 4.4 のサンプルコード (公式サイト)


Android 公式サイト に、サンプルコードが掲載されています。
しかし、ソースコードだけで説明がいっさいなし。 (^^;

★ API 19 (Android 4.4)
☆ は SDK 19 に含まれていないもの

Background
☆ repeatingAlarm API 4 / 17

Connectivity
BluetoothLeGatt
NetworkConnect
BasicNetworking
BasicSyncAdapter

Input
BasicMultitouch
BasicGestureDetect

Content
BasicContactables
AppRestrictions
★ StorageClient API 19 / 19
★ StorageProvider API 19 / 19

Media
BasicMediaRouter
☆ BasicMediaDecoder API 17 / –

Security
BasicAndroidKeyStore

Testing
ActivityInstrumentation

UI
BasicAccessibility
☆ HorizontalPaging API 11 / 16
ShareActionProvider
Styled
Basic
☆ ImmersiveMode API 11 / 19
TextSwitcher
BorderlessButtons
BasicNotifications
★ AdvancedImmersiveMode API 19 / 19
★ BasicImmersiveMode API 19 / 19
CustomChoiceList
DoneBar
ListPopupMenu
CustomNotifications

Views
☆ TextLinkify API 4 / 17

Android 公式サイト Samples

関連
Android のサンプルコード


ActionBarCompat ShareActionProvider


20130814 share_action_provider_main

ActionBarCompat に関するサンプルコードです。
Android 4.3 の SDK に同封されています。
特に新しい機能ではないので、Android Stadio のサンプルとして提示されているようです。

概要
このサンプルは、ActionBarCompat と供に android.support.v7.widget.ShareActionProvider を表示する方法を示します。
複数のページがあり、画像だけのページと文字だけのページがあります。
20130814 share_action_provider_main20130814 share_action_provider_image20130814 share_action_provider_text

アクションバーのメッセージ・アイコンをクリックすると、メッセージが開きます。
注意
テキストはうまくいくが、画像は例外で落ちます。
ShareActionProvide の呼び出しはしてるようですが、AssetProvider との連携がうまくいっていないようです。
20130814 share_action_provider_text_message

ソースコードの説明

(1) MainActivity.java
メインの ActionBarActivity です。
ViewPager と ContentItem を使って、ページを作っています。

(2) AssetProvider.java
このアプリの assets フォルダにある画像ファイルを提供する ContentProvider です。

(3) ContentItem.java
コンテンツをカプセル化するクラスです。
画像だけのページと文字だけのページを持っています。

注意
(1) サンプルコードは、一カ所だけ修正が必要です。
MainActivity がないというエラーが出ます。
ShareActionProvider/ShareActionProvider/src/main/src -> java

(2) 画像のときに、メッセージ・アイコンをクリックすると、下記の例外が発生します。

Caused by: java.lang.IllegalArgumentException: Query on content://com.example.android.actionbarcompat.shareactionprovider/photo_1.jpg returns null result.

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


ActionBarCompat ListPopupMenu


20130812list_popup_menu_main

ActionBarCompat に関するサンプルコードです。
Android 4.3 の SDK に同封されています。
特に新しい機能ではないので、Android Stadio のサンプルとして提示されているようです。

概要
このサンプルは、一覧表示(List) の中にある PopupMenu の使い方を教えます。
チーズの一覧が表示されます。
チーズの一覧の項目は、ポップアップメニューのための overfolow アイコン (縦3つの点) を持っています。
アイコンをクリックすると、ダウンメニュー形式のポップアップメニューが表示されます。
ポップアップメニューの remove 項目をクリックすると、チーズの一覧の項目が削除されます。
20130812list_popup_menu_main20130812list_popup_menu_popup20130812list_popup_menu_deleted

ソースコードの説明

(1) res/layout/list_item.xml
ImageView を使って、overflow アイコンを表示しています。

(2) MainActivity.java
メインの ActionBarActivityです

(3) PopupListFragment.java
チーズの一覧を表示する ListFragment です。
View#setOnClickListener を使って、overflow アイコンのクリックを検出しています。
View#postRunnable を使って、ポップアップメニューを表示します。
ポップアップメニューが表示される前に、View はその位置を変更するかもしれません。
PopupMenu.OnMenuItemClickListener を使って、ポップアップメニューのクリックを検出して、チーズ一覧の項目の削除を行います。

(4) Cheeses.java
チーズの名称のクラスです。

注意
サンプルコードは、一カ所だけ修正が必要です。
MainActivity がないというエラーが出ます。
ListPopupMenu/ListPopupMenu/src/main/src -> java

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


ActionBarCompat Styled


20130811action_bar_compat_styled_landscape

ActionBarCompat に関するサンプルコードです。
Android 4.3 の SDK に同封されています。
特に新しい機能ではないので、Android Stadio のサンプルとして提示されているようです。

概要
このサンプルは、カスタムスタイルを持つアクションバーです。
画面が狭い場合は、上下に分離したアクションバーを表示します。

横画面
20130811action_bar_compat_styled_landscape

縦画面
20130811action_bar_compat_styled_portrait

ソースコードの説明

(1) AndroidManifest.xml
android.support.UI_OPTIONS に splitActionBarWhenNarrow を設定しています。
画面が狭い場合は、上下に分離したアクションバーを表示します。
詳しくは activityタグ を参照ください。

(2) res/valus/styles.xml
actionBarStyle でスタイルを定義しています。

(3) MainActivity.java
メインの ActionBarActivity です。
ActionBar#addTab を使って、タブを追加しています。
ActionBar.TabListener を使って、タブのクリックを検出しています。

注意
サンプルコードは、一カ所だけ修正が必要です。
MainActivity がないというエラーが出ます。
Styled/Styled/src/main/src -> java

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


ActionBarCompat Basic


20130809actionz_bar_compat_basic_main

ActionBarCompat に関するサンプルコードです。
Android 4.3 の SDK に同封されています。
特に新しい機能ではないので、Android Stadio のサンプルとして提示されているようです。

概要
このサンプルは、アクション・バーを表示する基本的となるものです。
アクション・バーにアクション項目として表示されないものは、
Overflow アイコン (縦3つの点) をクリックしたときに表示されます。
このサンプルでは、refresh と location はアクション・バーに表示され、settings はOverflow アイコンに表示されます。
20130809actionz_bar_compat_basic_main20130809actionz_bar_compat_basic_overflow

ソースコードの説明

(1) /res/menu/main.xml
refresh を support:showAsAction=”ifRoom” として、
setting を support:showAsAction=”never” として、設定します。
それぞれの意味は Menu Resource を参照ください。

(2) MainActivity.java
メインの ActionBarActivity です。
MenuItemCompat#setShowAsAction を使用して、location を表示します。

注意
サンプルコードは、一カ所だけ修正が必要です。
MainActivity がないというエラーが出ます。
Basic/Basic/src/main/src -> java

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


ActionBar DoneBar


20130808done_bar_main

ActionBar に関するサンプルコードです。
Android 4.3 の SDK に同封されています。
特に新しい機能ではないので、Android Stadio のサンプルとして提示されているようです。

概要
このサンプルは、アクションバーに関する2つのデモを示します。
詳細画面の表示や、別のアクションが、必要とされない単純なシナリオに適しています。

(1) Done Bar
このデモでは、Done Bar がアクションバーのエントリを置き換えます。
実行するか (Done)、キャンセルするか (Cancel) の2つの選択肢が提示されます。
なお、このデモでは、どちらのボタンを押しても、Activity が終了して、メイン画面に戻ります。
20130808done_bar_donebar

(2) Done Button
このデモでは、Done Button がアクションバーの UP アイコンとその振る舞いを置き換えます。
Action Overflow として、キャンセルも実装されています。
アクションバーの Overflowアイコン(縦の3つの点) を押すと、メニューが表れます、
なお、このデモでは、どちらのボタンを押しても、Activity が終了して、メイン画面に戻ります。
20130808done_bar_donebutton

ソースコードの説明
3つのソースコードがあります。

(1) SampleDashboardActivity.java
メインの Activity です。
(2) DoneBarActivity.java
DoneBar の Activity です。
(3) DoneButtonActivity.java
DoneButto の Activity です。
(2) (3) ともに、ActionBar#setDisplayOptions と ActionBar#setCustomView を使って、独自のアクションバーを設置しています。

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


BasicAccessibility -Android 4.0


20130807basic_accessibility

Android 4.0 から、Accessibility が改善されました。
重要なこととして、View#sendAccessibilityEvent の動作が変わりました。
Android 4.0 から、View がコンテキスト情報をイベントに追加するためのコールバックが追加されました。
それ以前は、 AccessibilityEvent を初期化し、AccessibilityManager に送っていました。

Accessibility – Android 4.0 APIs | 日本語訳

サンプルコード
Android 4.3 の SDK にサンプルコード BasicAccessibility が同封されています。
特に新しい機能ではないので、Android Studio のサンプルとして提示されているようです。

試してみました。
上側は Button Checkboxes あたりは、特に変わったところはない。
下側の Custom View は、ちょっと面白い。
大きな丸をクリックすると、小さな丸の位置が変わります。

ソースコードの説明
ソースコードが2つあります。

(1) MainActivity.java
メイン の Activity です。

(2) DialView.java
大きな丸と小さな丸 (Custom View) を実現する View です。
大きな丸をクリックすると、小さい丸の位置を変更します。
AccessibilityDelegate#onPopulateAccessibilityEvent を使っています。

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


BasicMediaRouter – Android 4.2


20130805media_router_blue

Android 4.2 から External display がサポートされました。
アプリから DisplayManager を通して、外部のディスプレイと通信できます。サイズ、解像度、ディスプレイ名などの機能パラメータを取得することができます。
従来から、HDMI 端子があるものは、Android 端末と同じ画面をディスプレイに表示するミラーリングが出来ました。
今回から、Android 端末と違う画面を出すセカンドディスプレイがサポートされました。
また、Wifi で接続する Miracast にも対応しています。

External display support | 日本語訳

サンプルコード

Android 4.3 の SDK にサンプルコード BasicMediaRouter が入っています。
なぜか AOSP (Android Open Source Project) では見つからなかった。
//samples/android-18/media/BasicMediaRouter

試してみました。
(1) Android 端末を HDMI のディスプレイに接続します。
(2) 接続できると、Connected to HDMI が表示されます。
(3) Android の Change Color にタッチすると、ディスプレイの背景色が変わります。
20130805media_router_main20130805media_router_hdmi
20130805media_router_blue20130805media_router_red

サンプルコードの説明

(1) MainActivity.java
メインの Activity です。
API 17 から追加された MediaRouter を使っています。

(2) SamplePresentation.java
セカンドディスプレイに表示します。
API 17 から追加された Presentation を使っています。

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


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 のサンプルコード