SlideShare une entreprise Scribd logo
1  sur  61
Télécharger pour lire hors ligne
ICS開発情報


                              @v vakame


Saturday, March 24, 12
Honeycomb
                     • Fragment
                     • Action Bar
                     • Loader
                     • Gamepad, Joypad
                     • USB Host
                     • ADK (Android Open Accessory Development Kit)
                                            世間がスルーw
Saturday, March 24, 12
Ice Cream Sandwich


                     • Action Provider

                     • Android Beam

                     • Wi-Fi Direct




Saturday, March 24, 12
Compatibility Package
                     • 一部、新APIの互換パッケージ有り
                         • Android 1.6(Donuts) 以降に対応
                     • 以下のAPIが使えるよ!
                         • 各種 Fragment
                         • 各種 Loader
                                              Action Bar はありません。
                         • 各種 Adapter    ActionBarSherlock というのがあります。



                         • MenuCompat

Saturday, March 24, 12
3.0


                         Fragment

                              詳細はyanzm本2で!



                              サンプルアプリも便利!
   日経ソフトウェア3月号
Saturday, March 24, 12
Fragment

                     • Android開発の新しい基本要素

                     • ライフサイクルイベントを持つ

                     • 部品化されたActivity

                     • ライブラリ化がしやすい

                                   必修科目!!!

Saturday, March 24, 12
構成の変化
                                    今までの作り方

                         Activity
                                    View
                                    View
                                    View
                                    View
                                    View


Saturday, March 24, 12
構成の変化
                                これからの作り方

                         Activity
                         View有りFragment
                                    View

                                    View
                                    View

                         View無しFragment
Saturday, March 24, 12
構成の変化
                     • ロジックを書く場所

                         • 今まではActivityに書いたり

                         • これからはFragmentに書く!

                         • ActivityはFragmentの交差点に

                     • Fragmentは小型Activity的な役割

Saturday, March 24, 12
使い方     (View有り)


                • スマホ・タブレット対応に便利

                     • 1Fragmentだけ表示=スマホ用

                     • 複数Frament表示=タブレット用

                         • ↑スマホで複数Fragmentもあり



Saturday, March 24, 12
使い方                  (View有り)
     <?xml version="1.0" encoding="utf-8"?>
     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"
         android:orientation="vertical" >

               <TextView
                   android:layout_width="fill_parent"
                   android:layout_height="wrap_content"
                   android:text="@string/hello" />
                                                                    こんだけ

               <fragment
                   android:id="@+id/fragment"
                   android:name="net.vvakame.hakodateika.SampleFragment"
                   android:layout_width="match_parent"
                   android:layout_height="wrap_content" />

     </LinearLayout>
Saturday, March 24, 12
使い方                           (View有り)

public class SampleFragment extends Fragment {

	 @Override
	 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
  {
	 	 return inflater.inflate(R.layout.fragment, container);
	 }
}

 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:orientation="vertical" >

       <TextView
           android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:text="@string/this_is_fragment" />

 </LinearLayout>



Saturday, March 24, 12
使い方    (View無し)


                • ロジックのライブラリ化に便利

                     • ライフサイクルイベントあるからね!

                • プログラムからFragmentを追加してやる

                • onCreateView で null を返すとエラー



Saturday, March 24, 12
使い方                  (View無し)

      public class MainActivity extends Activity {
      	 @Override
      	 public void onCreate(Bundle savedInstanceState) {
      	 	 super.onCreate(savedInstanceState);
      	 	 setContentView(R.layout.main);

      	     	     { // Fragmentの作成と登録
      	     	     	      SampleFragment fragment = new SampleFragment();
      	     	     	      FragmentManager manager = getFragmentManager();
      	     	     	      FragmentTransaction transaction = manager.beginTransaction();
      	     	     	      transaction.add(fragment, "SampleFragment");
      	     	     	      transaction.commit();
      	     	     }
      	     }
      }


                                                          compat 利用時は
                                                      FragmentActgivityを継承

Saturday, March 24, 12
使い方       (View無し)

                • ライブラリ化の例

                     • Android Beamの簡単ライブラリ化

                         • Activityに2つのinterfaceを実装

                         • AndroidManifestに少し書き足す

                         • ↑これだけで簡単に利用可能!!
                                       実際のコードを見てみます

Saturday, March 24, 12
Fragmentの差し替え

                • 画面遷移を表現することも可能

                     • FragmentManager とか

                     • FragmentTransaction とか




Saturday, March 24, 12
addToBackStack
                    public class MainActivity extends Activity implements OnClickListener {
                    	   int mCount = 1;

                    	    @Override
                    	    public void onCreate(Bundle savedInstanceState) {
                    	    	   super.onCreate(savedInstanceState);
                    	    	   setContentView(R.layout.main);

                    	    	   { // 初回は addToBackStackなし
                    	    	   	   SampleFragment fragment = new SampleFragment("No." + mCount);
                    	    	   	   FragmentTransaction tx = getFragmentManager().beginTransaction();
                    	    	   	   tx.replace(R.id.fragment_place, fragment).commit();
                    	    	   	   mCount++;
                    	    	   }
                    	    }

                    	    @Override
                    	    public void onClick(View v) {
                    	    	   SampleFragment fragment = new SampleFragment("No." + mCount);
                    	    	   FragmentTransaction tx = getFragmentManager().beginTransaction();
                    	    	   tx.replace(R.id.fragment_place, fragment).addToBackStack(null).commit();
                    	    	   mCount++;
                    	    }
                    }                        Backキーで1つ前のFragmentに戻れる!

Saturday, March 24, 12
おすすめイディオム
                     • onAttach で独自コールバックを取得
                         public class SampleFragment extends Fragment {
                         	   public interface OnSampleCallback {
                         	   	    public void onXxx();
                         	   }

                         	   public interface OnSampleCallbackPicker {
                         	   	   public OnSampleCallback getOnSampleCallback();
                         	   }

                         	   OnSampleCallback mCallback;

                         	   @Override
                         	   public void onAttach(Activity activity) {
                         	   	   super.onAttach(activity);

                         	   	   if (activity instanceof OnSampleCallbackPicker == false) {
                         	   	   	   throw new ClassCastException(
                         	   	   	   	    	   "activity が OnSampleCallbackPicker を実装していません.");
                         	   	   }
                         	   	   mCallback = ((OnSampleCallbackPicker) activity).getOnSampleCallback();
                         	   	   if (mCallback == null) {
                         	   	   	   throw new NullPointerException("activityからcallbackが取得できませんでした");
                         	   	   }
                         	   }
                         }


Saturday, March 24, 12
おすすめイディオム
                     • Activity で独自コールバックを実装
                         public class MainActivity extends Activity implements OnSampleCallbackPicker {
                         	   @Override
                         	   public void onCreate(Bundle savedInstanceState) {
                         	   	    super.onCreate(savedInstanceState);
                         	   	    setContentView(R.layout.main);

                         	   	   { // Fragmentの作成と登録
                         	   	   	   SampleFragment fragment = new SampleFragment();
                         	   	   	   FragmentManager manager = getFragmentManager();
                         	   	   	   FragmentTransaction transaction = manager.beginTransaction();
                         	   	   	   transaction.add(fragment, "SampleFragment");
                         	   	   	   transaction.commit();
                         	   	   }
                         	   }

                         	   public OnSampleCallback getOnSampleCallback() {
                         	   	   return new OnSampleCallbackImpl();
                         	   }

                         	   class OnSampleCallbackImpl implements OnSampleCallback {

                         	   	   public void onXxx() {
                         	   	   }                                複数Fragment利用時に
                         	   }
                         }                                          名前の衝突が少ない
Saturday, March 24, 12
おすすめイディオム
                     • ActivityでコードからFragmentを差し
                         替える場合
                         public class MainActivity extends Activity {
                         	   @Override
                         	   public void onCreate(Bundle savedInstanceState) {
                         	   	    super.onCreate(savedInstanceState);
                         	   	    setContentView(R.layout.main);

                         	   	   { // Fragmentの作成と登録
                         	   	   	   SampleFragment fragment = new SampleFragment(new OnSampleCallbackImpl());
                         	   	   	   FragmentManager manager = getFragmentManager();
                         	   	   	   FragmentTransaction transaction = manager.beginTransaction();
                         	   	   	   transaction.add(fragment, "SampleFragment");
                         	   	   	   transaction.commit();
                         	   	   }
                         	   }

                         	   class OnSampleCallbackImpl implements OnSampleCallback {

                         	   	   public void onXxx() {
                         	   	   }
                         	   }                                   Fragmentの使い回しが
                         }
                                                                      よりやりやすく
Saturday, March 24, 12
Fragmentのライフサイクル
                         Activity                        Fragment
                                         onAttach
                         onCreate                         onCreate
                                      onCreateView

                          onStart    onActivityCreated

                                          onStart
                         onResume
                                        onResume
                         onPause
                                         onPause

                          onStop          onStop
                                                          onDestroy
                                      onDestroyView
                         onDestroy                        onDetach
Saturday, March 24, 12
よく使うやつ
                         Activity                         Fragment
                                          onAttach
                         onCreate                          onCreate
                                       onCreateView

                          onStart     onActivityCreated

                                           onStart
                         onResume
                                         onResume
                         onPause
                                          onPause

                          onStop           onStop
                                                           onDestroy
                                       onDestroyView
                         onDestroy                         onDetach
Saturday, March 24, 12
3.0


                             ActionBar


                         yanzm本2
Saturday, March 24, 12
これ




Saturday, March 24, 12
Action Bar

                     • 今まではMenuキー(ハードキー)だった

                     • 機能があるか押すまでわからん…

                         • じゃ、画面上に出せばよくね?

                         • ↑たぶんGoogleはこう思った



Saturday, March 24, 12
使い方

                     • AndroidManifest.xml で…

                         • targetSdkVersion を 11以上

                         • minSdkVersion を 11以上

                         • ↑どっちか!



Saturday, March 24, 12
ActionBarにできること
                         • 今までのMenuと同じこと

                         • Viewを配置したりできる

                         • SplitActionBarで画面下に表示するこ
                          ともできる




Saturday, March 24, 12
3.0


                               Loader


                         yanzm本2
Saturday, March 24, 12
Loader

                     • AsyncTask のお利口さんVersion

                         • AsyncTaskLoader
                         • CursorLoader
                     • 処理結果をキャッシュしてくれる



Saturday, March 24, 12
vs AsyncTask?
                     • Loaderがよさそう

                         • データ更新通知が受け取れるもの

                     • AsyncTask がよさそう

                         • 頻繁に更新されるもの

                         • キャッシュの意味が薄いもの

                         • 毎回実行されないと困るもの
                            AsyncTask がいらなくなるわけじゃなさそうです
Saturday, March 24, 12
3.1


                         Gamepad, Joypad


                                もうすこし詳しい説明あります

Saturday, March 24, 12
ゲーム用HID対応大幅強化




                         全部Joystick扱い
                         Gamepadは...?




Saturday, March 24, 12
リッチなゲームも作れる
                     • ActivityにGenericMotionEvent が追加

                     • on∼ とか dispatch∼ とか

                     • ボタン系は従来通りKeyEvent

                     • アナログ系はGenericMotionEvent

                     • 一定期間の入力が一気に渡されるので
                         MotionEvent#getHistoricalXXX 使う
                                        USB接続のKeyboardやMouseも
                                       サポートされたので幅がさらに↑↑

Saturday, March 24, 12
キーコンフィグだけ対応でもおk




                         既存のゲームも操作性大幅↑↑


Saturday, March 24, 12
3.1


                         USB Host

                            ADK とは違うのだよ!



                            もうすこし詳しい説明あります

Saturday, March 24, 12
USB Host?
                     • 今までのAndroidはDevice側だった

                         • マスストレージ とか

                     • 今度のAndroidはHost側になれます!

                         • ラベルプリンタを接続して印刷

                         • LEDディスプレーに図形表示 他

                             プロトコルが分かればなんでも出来る…!?
                         デバイスメーカーさん、対応Androidアプリ開発いかがですか!

Saturday, March 24, 12
実際にやってみた




                            タカラトミー グリッターパネル
                            http://amzn.to/glitterpanel


Saturday, March 24, 12
3.1


                         ADK



Saturday, March 24, 12
ADK?
                     • Androidはデバイス側

                         • ADKがホスト側 …なんか直感と逆!

                     • Android 周辺機器が作れる

                     • 2.3.4 以降対応のBackport有り
                                      アプリ連携も容易!ハード対応アプリが
                                      なければマーケットに飛ばしたりも可能



                                         @magoroku15 先生の
                                           資料がスゴい!
                         RT社のADKボード
Saturday, March 24, 12
4.0


                          ActionProvider


                         yanzm本2
Saturday, March 24, 12
ActionProvider

                     • ActionBar用の動作のライブラリ化

                     • 公式だと ShareActionProvider

                         • 正直他にどう使えばいいのやら…?

                     • 良い活用方法が思いついたら教えて!



Saturday, March 24, 12
使い方

        <?xml version="1.0" encoding="utf-8"?>
        <menu xmlns:android="http://schemas.android.com/apk/res/android" >

                <item
                    android:id="@+id/pick_action_provider"
                    android:actionProviderClass="net.vvakame.applist.ApplicationActionProvider"
                    android:icon="@android:drawable/ic_menu_send"
                    android:showAsAction="always"/>

        </menu>




                                            ActionBar 実装クラスを指定します

Saturday, March 24, 12
4.0


                         Android Beam



   日経ソフトウェア4月号             2.3本 NFCの章
Saturday, March 24, 12
Android Beam
                     • NFC 

                         • 端末タッチで簡単に通信可能

                         • でも転送速度は遅い 1KBが目安

                     • 端末間通信のための便利なAPI

                     • かっこいいUI!

                     • 送信先アプリ指定も可能!

Saturday, March 24, 12
NFC?
                     • Near Field Communication の略

                         • FeliCa とか Kitaca, Suica みたいな奴

                     • 実は 2.3 時代からNFCのAPIはあった

                         • 2.3.4 から書込/送信も可能に

                         • Beam は OSとして使い方を示した!

Saturday, March 24, 12
Android Beam?

                         • 主に端末 ←→ 端末の情報交換

                          • Youtubeアプリで見てる動画の共有

                          • 起動中アプリを相手側で起動

                         • 送信先アプリの指定が可能 (AAR)
                                アプリにBeam用実装がない場合、
                                受信側で同じアプリを起動します。
                                なかったらマーケットへ飛びます。
Saturday, March 24, 12
使い方

                     • AndroidManifest.xmlに書く

                     • NfcAdapter経由でコールバックを登録

                     • NDEF を送って送受信する


                                    実際のコードを見てみます

Saturday, March 24, 12
NDEFって何?

                     • NFC Data Exchange Format の略

                     • NFCによるデータ交換はこの形式

                     • Beamするだけならテンプレコードでおk

                         • 別に覚えなくても問題なし!



Saturday, March 24, 12
android.nfc.NdefMessage
                                NdefMessage


                           NdefRecord         NdefRecord


                     • NdefMessageは1つ以上のNdefRecordか
                         ら構成される

                     • 一般的には1レコードだけっぽい


Saturday, March 24, 12
android.nfc.NdefRecord
                                    NdefMessage


                              NdefRecord          NdefRecord


               MB        ME    CF    SR    IL      TNF


                         LENGTH INFO(TYPE, PAYLOAD, ID)


                            BODY(TYPE, ID, PAYLOAD)
Saturday, March 24, 12
どう解釈するの?

                     • TNFとTypeの値によってPayloadの解釈
                         の仕方が変わる

                     • AndroidSDKに含まれるNFCDemoでは
                         Text, Uri, SmartPosterに対応

                     • NFC RTD でぐぐれ


Saturday, March 24, 12
略語
                     •   NFC Near Field Communication
                     •   NDEF NFC Data Exchange Format
                     •   MB Message Begin
                     •   ME Message End
                     •   CF Chunk Flag
                     •   SR Short Record
                     •   IL ID Length
                     •   TNF Type Name Format
                     •   RTD Record Type Definition

Saturday, March 24, 12
4.0


                             Wi-FI Direct


                         今日発売!

   日経ソフトウェア5月号
Saturday, March 24, 12
Wi-Fi Direct
                     • 端末同士でWi-Fiで通信できる

                     • 通信速度が早い

                     • セキュア (WPA2, WPS)

                     • 接続も比較的簡単…

                     • フレームワークの品質が悪い!!!!

                     • 2.3時代のNFCのAPIを見ているよう…

Saturday, March 24, 12
Wi-Fi Direct (仕様)
                     • 機器同士で通信が可能

                         • APの助けとかはいらない

                     • Ad hoc とは違う (通常の接続と両立)

                         • Androidでは今のところ両立不可

                     • プリンタに直接接続して印刷とか

                         • 今のとこOSは手伝ってくれない

Saturday, March 24, 12
Frameworkェ…!
                     • OS巻き込んで落ちる

                     • 切断→再接続 を3セットくらいで落ちる

                     • 原稿書いてる途中10分に1回リブる

                     • OS設定画面のON/OFFイジっただけで
                         落ちる

                     • 使い物になるかァ!ヽ(`!´)ノ

Saturday, March 24, 12
(´・ω・`)


                         まだ製品品質じゃないね…
                          こなれるのまとうか…



                             今後の進化は超楽しみです!
                           端末間通信は全部コレになるといいかも

Saturday, March 24, 12
接続の流れ
  アプリの呼び出し処理
  OSからの通知
  ユーザにさせる操作


  0. Wi-Fi Directを有効にする (WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION がBroadcastされる)
  1. WifiP2pManager#discoverPeers で接続可能なPeerを探す
  2. WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION がBroadcastされてくる
  3. WifiP2pManager#requestPeers で各Peerの情報をリクエストする
  4. WifiP2pManager.PeerListListener#onPeersAvailable にコールバックが来る
  5. 接続の前準備として、WifiP2pConfig を組み立てる WPSの指定など
  6. WifiP2pManager#connect で指定したPeerに接続する
  7. WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION がBroadcastされてくる
  8. WifiP2pManager#requestConnectionInfo で接続情報をリクエストする
  9. WifiP2pManager.ConnectionInfoListener#onConnectionInfoAvailable にコールバックが来る
  10. 通信のための処理を行う(Socketを開き通信を行うなど)
  11. WifiP2pManager#removeGroup を呼び出し接続を解除する

Saturday, March 24, 12
必要な権限

    <?xml version="1.0" encoding="utf-8"?>
    <manifest 略>
            <uses-sdk android:minSdkVersion="14" />
            <!-- Wi-Fi Direct 接続確立 -->
            <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
            <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

            <!-- 通信のためのソケットを開くまで -->
            <uses-permission android:name="android.permission.INTERNET" />

            <uses-feature android:name="android.hardware.wifi.direct" />

           略
    </manifest>




Saturday, March 24, 12
おすすめ書籍
                            •   第1章 Android 4.0(ICS)
                            •   第2章 フラグメント
                            •   第3章 アクションバー
                            •   第4章 ノーティフィケーション
                            •   第5章 アニメーション
                            •   第6章 アプリケーションウィジェット
                            •   第7章 コピー&ペースト
                            •   第8章 ドラッグ&ドロップ
                            •   第9章 ローダー


                                  私が書きました
                                                       yanzm
Saturday, March 24, 12
Fragment
                                                         Action Provider
                                     Action Bar


                         Loader                     Android




                                  気になること?
            Gamepad, Joypad
                                                   Wi-Fi Direct
                                  USB Host


                                             ADK



Saturday, March 24, 12

Contenu connexe

Similaire à 函館IKA ICS開発情報

PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!Shohei Okada
 
20130412 titanium meetupvol7
20130412 titanium meetupvol720130412 titanium meetupvol7
20130412 titanium meetupvol7Hiroshi Oyamada
 
Using the Fragments(Android)
Using the Fragments(Android)Using the Fragments(Android)
Using the Fragments(Android)Teruaki Kinoshita
 
函館IKA Eclipse活用術
函館IKA Eclipse活用術函館IKA Eclipse活用術
函館IKA Eclipse活用術Masahiro Wakame
 
大規模なJavaScript開発の話
大規模なJavaScript開発の話大規模なJavaScript開発の話
大規模なJavaScript開発の話terurou
 
JavaScriptをまじめに考えました+
JavaScriptをまじめに考えました+JavaScriptをまじめに考えました+
JavaScriptをまじめに考えました+Hiroaki Okubo
 
three.js はじめましょ
three.js はじめましょthree.js はじめましょ
three.js はじめましょHiroaki Okubo
 
Introduction for Browser Side MVC
Introduction for Browser Side MVCIntroduction for Browser Side MVC
Introduction for Browser Side MVCRyunosuke SATO
 
Inside frogc in Dart
Inside frogc in DartInside frogc in Dart
Inside frogc in DartGoro Fuji
 
jjugccc2018 app review postmortem
jjugccc2018 app review postmortemjjugccc2018 app review postmortem
jjugccc2018 app review postmortemtamtam180
 
20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会Yukihiro Kitazawa
 
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsugSpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsugY Watanabe
 
React+redux+saga 02
React+redux+saga 02React+redux+saga 02
React+redux+saga 02TIS Inc
 
Java fx勉強会lt 第8回
Java fx勉強会lt 第8回Java fx勉強会lt 第8回
Java fx勉強会lt 第8回Taiji Miyabe
 
JS開発におけるTDDと自動テストツール利用の勘所
JS開発におけるTDDと自動テストツール利用の勘所JS開発におけるTDDと自動テストツール利用の勘所
JS開発におけるTDDと自動テストツール利用の勘所Koji Nakamura
 
ReduxとSwiftの組み合わせ:改訂版
ReduxとSwiftの組み合わせ:改訂版ReduxとSwiftの組み合わせ:改訂版
ReduxとSwiftの組み合わせ:改訂版Fumiya Sakai
 
React Native GUIDE
React Native GUIDEReact Native GUIDE
React Native GUIDEdcubeio
 
大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話terurou
 

Similaire à 函館IKA ICS開発情報 (20)

PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!
 
20130412 titanium meetupvol7
20130412 titanium meetupvol720130412 titanium meetupvol7
20130412 titanium meetupvol7
 
Using the Fragments(Android)
Using the Fragments(Android)Using the Fragments(Android)
Using the Fragments(Android)
 
Node.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャーNode.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャー
 
函館IKA Eclipse活用術
函館IKA Eclipse活用術函館IKA Eclipse活用術
函館IKA Eclipse活用術
 
大規模なJavaScript開発の話
大規模なJavaScript開発の話大規模なJavaScript開発の話
大規模なJavaScript開発の話
 
マーブル図で怖くないRxJS
マーブル図で怖くないRxJSマーブル図で怖くないRxJS
マーブル図で怖くないRxJS
 
JavaScriptをまじめに考えました+
JavaScriptをまじめに考えました+JavaScriptをまじめに考えました+
JavaScriptをまじめに考えました+
 
three.js はじめましょ
three.js はじめましょthree.js はじめましょ
three.js はじめましょ
 
Introduction for Browser Side MVC
Introduction for Browser Side MVCIntroduction for Browser Side MVC
Introduction for Browser Side MVC
 
Inside frogc in Dart
Inside frogc in DartInside frogc in Dart
Inside frogc in Dart
 
jjugccc2018 app review postmortem
jjugccc2018 app review postmortemjjugccc2018 app review postmortem
jjugccc2018 app review postmortem
 
20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会
 
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsugSpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
 
React+redux+saga 02
React+redux+saga 02React+redux+saga 02
React+redux+saga 02
 
Java fx勉強会lt 第8回
Java fx勉強会lt 第8回Java fx勉強会lt 第8回
Java fx勉強会lt 第8回
 
JS開発におけるTDDと自動テストツール利用の勘所
JS開発におけるTDDと自動テストツール利用の勘所JS開発におけるTDDと自動テストツール利用の勘所
JS開発におけるTDDと自動テストツール利用の勘所
 
ReduxとSwiftの組み合わせ:改訂版
ReduxとSwiftの組み合わせ:改訂版ReduxとSwiftの組み合わせ:改訂版
ReduxとSwiftの組み合わせ:改訂版
 
React Native GUIDE
React Native GUIDEReact Native GUIDE
React Native GUIDE
 
大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話
 

Plus de Masahiro Wakame

GoCon2016 spring 自作Webフレームワーク uconを作った話
GoCon2016 spring 自作Webフレームワーク uconを作った話GoCon2016 spring 自作Webフレームワーク uconを作った話
GoCon2016 spring 自作Webフレームワーク uconを作った話Masahiro Wakame
 
GoCon 2015 Summer GoのASTをいじくって新しいツールを作る
GoCon 2015 Summer GoのASTをいじくって新しいツールを作るGoCon 2015 Summer GoのASTをいじくって新しいツールを作る
GoCon 2015 Summer GoのASTをいじくって新しいツールを作るMasahiro Wakame
 
ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3Masahiro Wakame
 
TypeScriptは明日から使うべき
TypeScriptは明日から使うべきTypeScriptは明日から使うべき
TypeScriptは明日から使うべきMasahiro Wakame
 
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部Masahiro Wakame
 
Google Glassでできること XE12版 最新開発情報 Mirror API & GDK
Google Glassでできること XE12版 最新開発情報 Mirror API & GDKGoogle Glassでできること XE12版 最新開発情報 Mirror API & GDK
Google Glassでできること XE12版 最新開発情報 Mirror API & GDKMasahiro Wakame
 
コンパイラ指向ReVIEW
コンパイラ指向ReVIEWコンパイラ指向ReVIEW
コンパイラ指向ReVIEWMasahiro Wakame
 
20ヶ月を取り戻す Dart flight school
20ヶ月を取り戻す Dart flight school20ヶ月を取り戻す Dart flight school
20ヶ月を取り戻す Dart flight schoolMasahiro Wakame
 
CEATEC Glassware(Google Glassアプリ)開発の指南と開発事例
CEATEC Glassware(Google Glassアプリ)開発の指南と開発事例CEATEC Glassware(Google Glassアプリ)開発の指南と開発事例
CEATEC Glassware(Google Glassアプリ)開発の指南と開発事例Masahiro Wakame
 
ReVIEW & CI - ChefでCI環境構築
ReVIEW & CI - ChefでCI環境構築ReVIEW & CI - ChefでCI環境構築
ReVIEW & CI - ChefでCI環境構築Masahiro Wakame
 
Firefox OS勉強会 2nd TypeScript+AngularJS
Firefox OS勉強会 2nd TypeScript+AngularJSFirefox OS勉強会 2nd TypeScript+AngularJS
Firefox OS勉強会 2nd TypeScript+AngularJSMasahiro Wakame
 
AngularJS+TypeScript - AngularJS 1周年記念勉強会
AngularJS+TypeScript - AngularJS 1周年記念勉強会AngularJS+TypeScript - AngularJS 1周年記念勉強会
AngularJS+TypeScript - AngularJS 1周年記念勉強会Masahiro Wakame
 
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例までBuildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例までMasahiro Wakame
 
俺とお前とGoogleware
俺とお前とGoogleware俺とお前とGoogleware
俺とお前とGooglewareMasahiro Wakame
 
Datastoreへのアクセスを楽してMemcacheアクセスに置き換えるライブラリ作った
Datastoreへのアクセスを楽してMemcacheアクセスに置き換えるライブラリ作ったDatastoreへのアクセスを楽してMemcacheアクセスに置き換えるライブラリ作った
Datastoreへのアクセスを楽してMemcacheアクセスに置き換えるライブラリ作ったMasahiro Wakame
 

Plus de Masahiro Wakame (20)

GoCon2016 spring 自作Webフレームワーク uconを作った話
GoCon2016 spring 自作Webフレームワーク uconを作った話GoCon2016 spring 自作Webフレームワーク uconを作った話
GoCon2016 spring 自作Webフレームワーク uconを作った話
 
GoCon 2015 Summer GoのASTをいじくって新しいツールを作る
GoCon 2015 Summer GoのASTをいじくって新しいツールを作るGoCon 2015 Summer GoのASTをいじくって新しいツールを作る
GoCon 2015 Summer GoのASTをいじくって新しいツールを作る
 
ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3
 
TypeScriptは明日から使うべき
TypeScriptは明日から使うべきTypeScriptは明日から使うべき
TypeScriptは明日から使うべき
 
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
 
Google Glass XE17版
Google Glass XE17版Google Glass XE17版
Google Glass XE17版
 
Google Glassでできること XE12版 最新開発情報 Mirror API & GDK
Google Glassでできること XE12版 最新開発情報 Mirror API & GDKGoogle Glassでできること XE12版 最新開発情報 Mirror API & GDK
Google Glassでできること XE12版 最新開発情報 Mirror API & GDK
 
コンパイラ指向ReVIEW
コンパイラ指向ReVIEWコンパイラ指向ReVIEW
コンパイラ指向ReVIEW
 
20ヶ月を取り戻す Dart flight school
20ヶ月を取り戻す Dart flight school20ヶ月を取り戻す Dart flight school
20ヶ月を取り戻す Dart flight school
 
TypeScript 独習会
TypeScript 独習会TypeScript 独習会
TypeScript 独習会
 
CEATEC Glassware(Google Glassアプリ)開発の指南と開発事例
CEATEC Glassware(Google Glassアプリ)開発の指南と開発事例CEATEC Glassware(Google Glassアプリ)開発の指南と開発事例
CEATEC Glassware(Google Glassアプリ)開発の指南と開発事例
 
ReVIEW & CI - ChefでCI環境構築
ReVIEW & CI - ChefでCI環境構築ReVIEW & CI - ChefでCI環境構築
ReVIEW & CI - ChefでCI環境構築
 
Firefox OS勉強会 2nd TypeScript+AngularJS
Firefox OS勉強会 2nd TypeScript+AngularJSFirefox OS勉強会 2nd TypeScript+AngularJS
Firefox OS勉強会 2nd TypeScript+AngularJS
 
AngularJS+TypeScript - AngularJS 1周年記念勉強会
AngularJS+TypeScript - AngularJS 1周年記念勉強会AngularJS+TypeScript - AngularJS 1周年記念勉強会
AngularJS+TypeScript - AngularJS 1周年記念勉強会
 
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例までBuildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
 
俺とお前とGoogleware
俺とお前とGoogleware俺とお前とGoogleware
俺とお前とGoogleware
 
Datastoreへのアクセスを楽してMemcacheアクセスに置き換えるライブラリ作った
Datastoreへのアクセスを楽してMemcacheアクセスに置き換えるライブラリ作ったDatastoreへのアクセスを楽してMemcacheアクセスに置き換えるライブラリ作った
Datastoreへのアクセスを楽してMemcacheアクセスに置き換えるライブラリ作った
 
TypeScript 勉強会
TypeScript 勉強会TypeScript 勉強会
TypeScript 勉強会
 
JavaScript 再入門2
JavaScript 再入門2JavaScript 再入門2
JavaScript 再入門2
 
デバッグ戦略
デバッグ戦略デバッグ戦略
デバッグ戦略
 

Dernier

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 

Dernier (9)

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 

函館IKA ICS開発情報

  • 1. ICS開発情報 @v vakame Saturday, March 24, 12
  • 2. Honeycomb • Fragment • Action Bar • Loader • Gamepad, Joypad • USB Host • ADK (Android Open Accessory Development Kit) 世間がスルーw Saturday, March 24, 12
  • 3. Ice Cream Sandwich • Action Provider • Android Beam • Wi-Fi Direct Saturday, March 24, 12
  • 4. Compatibility Package • 一部、新APIの互換パッケージ有り • Android 1.6(Donuts) 以降に対応 • 以下のAPIが使えるよ! • 各種 Fragment • 各種 Loader Action Bar はありません。 • 各種 Adapter ActionBarSherlock というのがあります。 • MenuCompat Saturday, March 24, 12
  • 5. 3.0 Fragment 詳細はyanzm本2で! サンプルアプリも便利! 日経ソフトウェア3月号 Saturday, March 24, 12
  • 6. Fragment • Android開発の新しい基本要素 • ライフサイクルイベントを持つ • 部品化されたActivity • ライブラリ化がしやすい 必修科目!!! Saturday, March 24, 12
  • 7. 構成の変化 今までの作り方 Activity View View View View View Saturday, March 24, 12
  • 8. 構成の変化 これからの作り方 Activity View有りFragment View View View View無しFragment Saturday, March 24, 12
  • 9. 構成の変化 • ロジックを書く場所 • 今まではActivityに書いたり • これからはFragmentに書く! • ActivityはFragmentの交差点に • Fragmentは小型Activity的な役割 Saturday, March 24, 12
  • 10. 使い方 (View有り) • スマホ・タブレット対応に便利 • 1Fragmentだけ表示=スマホ用 • 複数Frament表示=タブレット用 • ↑スマホで複数Fragmentもあり Saturday, March 24, 12
  • 11. 使い方 (View有り) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> こんだけ <fragment android:id="@+id/fragment" android:name="net.vvakame.hakodateika.SampleFragment" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> Saturday, March 24, 12
  • 12. 使い方 (View有り) public class SampleFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment, container); } } <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/this_is_fragment" /> </LinearLayout> Saturday, March 24, 12
  • 13. 使い方 (View無し) • ロジックのライブラリ化に便利 • ライフサイクルイベントあるからね! • プログラムからFragmentを追加してやる • onCreateView で null を返すとエラー Saturday, March 24, 12
  • 14. 使い方 (View無し) public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); { // Fragmentの作成と登録 SampleFragment fragment = new SampleFragment(); FragmentManager manager = getFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); transaction.add(fragment, "SampleFragment"); transaction.commit(); } } } compat 利用時は FragmentActgivityを継承 Saturday, March 24, 12
  • 15. 使い方 (View無し) • ライブラリ化の例 • Android Beamの簡単ライブラリ化 • Activityに2つのinterfaceを実装 • AndroidManifestに少し書き足す • ↑これだけで簡単に利用可能!! 実際のコードを見てみます Saturday, March 24, 12
  • 16. Fragmentの差し替え • 画面遷移を表現することも可能 • FragmentManager とか • FragmentTransaction とか Saturday, March 24, 12
  • 17. addToBackStack public class MainActivity extends Activity implements OnClickListener { int mCount = 1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); { // 初回は addToBackStackなし SampleFragment fragment = new SampleFragment("No." + mCount); FragmentTransaction tx = getFragmentManager().beginTransaction(); tx.replace(R.id.fragment_place, fragment).commit(); mCount++; } } @Override public void onClick(View v) { SampleFragment fragment = new SampleFragment("No." + mCount); FragmentTransaction tx = getFragmentManager().beginTransaction(); tx.replace(R.id.fragment_place, fragment).addToBackStack(null).commit(); mCount++; } } Backキーで1つ前のFragmentに戻れる! Saturday, March 24, 12
  • 18. おすすめイディオム • onAttach で独自コールバックを取得 public class SampleFragment extends Fragment { public interface OnSampleCallback { public void onXxx(); } public interface OnSampleCallbackPicker { public OnSampleCallback getOnSampleCallback(); } OnSampleCallback mCallback; @Override public void onAttach(Activity activity) { super.onAttach(activity); if (activity instanceof OnSampleCallbackPicker == false) { throw new ClassCastException( "activity が OnSampleCallbackPicker を実装していません."); } mCallback = ((OnSampleCallbackPicker) activity).getOnSampleCallback(); if (mCallback == null) { throw new NullPointerException("activityからcallbackが取得できませんでした"); } } } Saturday, March 24, 12
  • 19. おすすめイディオム • Activity で独自コールバックを実装 public class MainActivity extends Activity implements OnSampleCallbackPicker { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); { // Fragmentの作成と登録 SampleFragment fragment = new SampleFragment(); FragmentManager manager = getFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); transaction.add(fragment, "SampleFragment"); transaction.commit(); } } public OnSampleCallback getOnSampleCallback() { return new OnSampleCallbackImpl(); } class OnSampleCallbackImpl implements OnSampleCallback { public void onXxx() { } 複数Fragment利用時に } } 名前の衝突が少ない Saturday, March 24, 12
  • 20. おすすめイディオム • ActivityでコードからFragmentを差し 替える場合 public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); { // Fragmentの作成と登録 SampleFragment fragment = new SampleFragment(new OnSampleCallbackImpl()); FragmentManager manager = getFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); transaction.add(fragment, "SampleFragment"); transaction.commit(); } } class OnSampleCallbackImpl implements OnSampleCallback { public void onXxx() { } } Fragmentの使い回しが } よりやりやすく Saturday, March 24, 12
  • 21. Fragmentのライフサイクル Activity Fragment onAttach onCreate onCreate onCreateView onStart onActivityCreated onStart onResume onResume onPause onPause onStop onStop onDestroy onDestroyView onDestroy onDetach Saturday, March 24, 12
  • 22. よく使うやつ Activity Fragment onAttach onCreate onCreate onCreateView onStart onActivityCreated onStart onResume onResume onPause onPause onStop onStop onDestroy onDestroyView onDestroy onDetach Saturday, March 24, 12
  • 23. 3.0 ActionBar yanzm本2 Saturday, March 24, 12
  • 25. Action Bar • 今まではMenuキー(ハードキー)だった • 機能があるか押すまでわからん… • じゃ、画面上に出せばよくね? • ↑たぶんGoogleはこう思った Saturday, March 24, 12
  • 26. 使い方 • AndroidManifest.xml で… • targetSdkVersion を 11以上 • minSdkVersion を 11以上 • ↑どっちか! Saturday, March 24, 12
  • 27. ActionBarにできること • 今までのMenuと同じこと • Viewを配置したりできる • SplitActionBarで画面下に表示するこ ともできる Saturday, March 24, 12
  • 28. 3.0 Loader yanzm本2 Saturday, March 24, 12
  • 29. Loader • AsyncTask のお利口さんVersion • AsyncTaskLoader • CursorLoader • 処理結果をキャッシュしてくれる Saturday, March 24, 12
  • 30. vs AsyncTask? • Loaderがよさそう • データ更新通知が受け取れるもの • AsyncTask がよさそう • 頻繁に更新されるもの • キャッシュの意味が薄いもの • 毎回実行されないと困るもの AsyncTask がいらなくなるわけじゃなさそうです Saturday, March 24, 12
  • 31. 3.1 Gamepad, Joypad もうすこし詳しい説明あります Saturday, March 24, 12
  • 32. ゲーム用HID対応大幅強化 全部Joystick扱い Gamepadは...? Saturday, March 24, 12
  • 33. リッチなゲームも作れる • ActivityにGenericMotionEvent が追加 • on∼ とか dispatch∼ とか • ボタン系は従来通りKeyEvent • アナログ系はGenericMotionEvent • 一定期間の入力が一気に渡されるので MotionEvent#getHistoricalXXX 使う USB接続のKeyboardやMouseも サポートされたので幅がさらに↑↑ Saturday, March 24, 12
  • 34. キーコンフィグだけ対応でもおk 既存のゲームも操作性大幅↑↑ Saturday, March 24, 12
  • 35. 3.1 USB Host ADK とは違うのだよ! もうすこし詳しい説明あります Saturday, March 24, 12
  • 36. USB Host? • 今までのAndroidはDevice側だった • マスストレージ とか • 今度のAndroidはHost側になれます! • ラベルプリンタを接続して印刷 • LEDディスプレーに図形表示 他 プロトコルが分かればなんでも出来る…!? デバイスメーカーさん、対応Androidアプリ開発いかがですか! Saturday, March 24, 12
  • 37. 実際にやってみた タカラトミー グリッターパネル http://amzn.to/glitterpanel Saturday, March 24, 12
  • 38. 3.1 ADK Saturday, March 24, 12
  • 39. ADK? • Androidはデバイス側 • ADKがホスト側 …なんか直感と逆! • Android 周辺機器が作れる • 2.3.4 以降対応のBackport有り アプリ連携も容易!ハード対応アプリが なければマーケットに飛ばしたりも可能 @magoroku15 先生の 資料がスゴい! RT社のADKボード Saturday, March 24, 12
  • 40. 4.0 ActionProvider yanzm本2 Saturday, March 24, 12
  • 41. ActionProvider • ActionBar用の動作のライブラリ化 • 公式だと ShareActionProvider • 正直他にどう使えばいいのやら…? • 良い活用方法が思いついたら教えて! Saturday, March 24, 12
  • 42. 使い方 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/pick_action_provider" android:actionProviderClass="net.vvakame.applist.ApplicationActionProvider" android:icon="@android:drawable/ic_menu_send" android:showAsAction="always"/> </menu> ActionBar 実装クラスを指定します Saturday, March 24, 12
  • 43. 4.0 Android Beam 日経ソフトウェア4月号 2.3本 NFCの章 Saturday, March 24, 12
  • 44. Android Beam • NFC  • 端末タッチで簡単に通信可能 • でも転送速度は遅い 1KBが目安 • 端末間通信のための便利なAPI • かっこいいUI! • 送信先アプリ指定も可能! Saturday, March 24, 12
  • 45. NFC? • Near Field Communication の略 • FeliCa とか Kitaca, Suica みたいな奴 • 実は 2.3 時代からNFCのAPIはあった • 2.3.4 から書込/送信も可能に • Beam は OSとして使い方を示した! Saturday, March 24, 12
  • 46. Android Beam? • 主に端末 ←→ 端末の情報交換 • Youtubeアプリで見てる動画の共有 • 起動中アプリを相手側で起動 • 送信先アプリの指定が可能 (AAR) アプリにBeam用実装がない場合、 受信側で同じアプリを起動します。 なかったらマーケットへ飛びます。 Saturday, March 24, 12
  • 47. 使い方 • AndroidManifest.xmlに書く • NfcAdapter経由でコールバックを登録 • NDEF を送って送受信する 実際のコードを見てみます Saturday, March 24, 12
  • 48. NDEFって何? • NFC Data Exchange Format の略 • NFCによるデータ交換はこの形式 • Beamするだけならテンプレコードでおk • 別に覚えなくても問題なし! Saturday, March 24, 12
  • 49. android.nfc.NdefMessage NdefMessage NdefRecord NdefRecord • NdefMessageは1つ以上のNdefRecordか ら構成される • 一般的には1レコードだけっぽい Saturday, March 24, 12
  • 50. android.nfc.NdefRecord NdefMessage NdefRecord NdefRecord MB ME CF SR IL TNF LENGTH INFO(TYPE, PAYLOAD, ID) BODY(TYPE, ID, PAYLOAD) Saturday, March 24, 12
  • 51. どう解釈するの? • TNFとTypeの値によってPayloadの解釈 の仕方が変わる • AndroidSDKに含まれるNFCDemoでは Text, Uri, SmartPosterに対応 • NFC RTD でぐぐれ Saturday, March 24, 12
  • 52. 略語 • NFC Near Field Communication • NDEF NFC Data Exchange Format • MB Message Begin • ME Message End • CF Chunk Flag • SR Short Record • IL ID Length • TNF Type Name Format • RTD Record Type Definition Saturday, March 24, 12
  • 53. 4.0 Wi-FI Direct 今日発売! 日経ソフトウェア5月号 Saturday, March 24, 12
  • 54. Wi-Fi Direct • 端末同士でWi-Fiで通信できる • 通信速度が早い • セキュア (WPA2, WPS) • 接続も比較的簡単… • フレームワークの品質が悪い!!!! • 2.3時代のNFCのAPIを見ているよう… Saturday, March 24, 12
  • 55. Wi-Fi Direct (仕様) • 機器同士で通信が可能 • APの助けとかはいらない • Ad hoc とは違う (通常の接続と両立) • Androidでは今のところ両立不可 • プリンタに直接接続して印刷とか • 今のとこOSは手伝ってくれない Saturday, March 24, 12
  • 56. Frameworkェ…! • OS巻き込んで落ちる • 切断→再接続 を3セットくらいで落ちる • 原稿書いてる途中10分に1回リブる • OS設定画面のON/OFFイジっただけで 落ちる • 使い物になるかァ!ヽ(`!´)ノ Saturday, March 24, 12
  • 57. (´・ω・`) まだ製品品質じゃないね… こなれるのまとうか… 今後の進化は超楽しみです! 端末間通信は全部コレになるといいかも Saturday, March 24, 12
  • 58. 接続の流れ アプリの呼び出し処理 OSからの通知 ユーザにさせる操作 0. Wi-Fi Directを有効にする (WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION がBroadcastされる) 1. WifiP2pManager#discoverPeers で接続可能なPeerを探す 2. WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION がBroadcastされてくる 3. WifiP2pManager#requestPeers で各Peerの情報をリクエストする 4. WifiP2pManager.PeerListListener#onPeersAvailable にコールバックが来る 5. 接続の前準備として、WifiP2pConfig を組み立てる WPSの指定など 6. WifiP2pManager#connect で指定したPeerに接続する 7. WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION がBroadcastされてくる 8. WifiP2pManager#requestConnectionInfo で接続情報をリクエストする 9. WifiP2pManager.ConnectionInfoListener#onConnectionInfoAvailable にコールバックが来る 10. 通信のための処理を行う(Socketを開き通信を行うなど) 11. WifiP2pManager#removeGroup を呼び出し接続を解除する Saturday, March 24, 12
  • 59. 必要な権限 <?xml version="1.0" encoding="utf-8"?> <manifest 略> <uses-sdk android:minSdkVersion="14" /> <!-- Wi-Fi Direct 接続確立 --> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <!-- 通信のためのソケットを開くまで --> <uses-permission android:name="android.permission.INTERNET" /> <uses-feature android:name="android.hardware.wifi.direct" /> 略 </manifest> Saturday, March 24, 12
  • 60. おすすめ書籍 • 第1章 Android 4.0(ICS) • 第2章 フラグメント • 第3章 アクションバー • 第4章 ノーティフィケーション • 第5章 アニメーション • 第6章 アプリケーションウィジェット • 第7章 コピー&ペースト • 第8章 ドラッグ&ドロップ • 第9章 ローダー 私が書きました yanzm Saturday, March 24, 12
  • 61. Fragment Action Provider Action Bar Loader Android 気になること? Gamepad, Joypad Wi-Fi Direct USB Host ADK Saturday, March 24, 12