SlideShare a Scribd company logo
1 of 55
Download to read offline
API Diffを
見てみよう
モケラボ株式会社 fkm
● Androidアプリ開発
● iOSアプリ開発
● 開発レクチャー
● キャラクター展開
○ グッズ作ったり
グッズあるよ!
日本Androidの会 メーリングリスト
https://googledevjp.blogspot.jp/2016/08/android-7-nougat.html
Nougat
API 24
https://googledevjp.blogspot.jp/2016/08/android-7-nougat.html
Nougat
API 24
Nougat MR1
API 25
API Diff
24
↓
25
https://developer.android.com/sdk/api_diff/25/changes.html
http://bit.ly/android-diff-24-25
と、ここまでスライド
つくってみて
1つ気づいたことがある
Material Motionのような動き
Google Slideじゃ作れない。。。
差分があるのは15パッケージ
● android
● android.app
● android.app.usage
● android.content
● android.content.pm
● android.content.res
● android.media
● android.os
● android.os.storage
● android.provider
● android.telecom
● android.telephony
● android.util
● android.view
● android.view.inputmethod
android.R.attr
XMLの属性が定義してあるとこ
いくつかフィールドが追加されている
● int shortcutDisabledMessage
● int shortcutId
● int shortcutLongLabel
● int shortcutShortLabel
android.content.Context
新しい定数追加
String SHORTCUT_SERVICE
android.content.pm パッケージ
いくつかクラスが追加されている
● LauncherApps.ShortcutQuery
● ShortcutInfo
● ShortcutInfo.Builder
● ShortcutManager
App Shortcuts!
ん?
これ
どっかで
見たことない?
引用元:https://developer.apple.com/ios/3d-touch/
App shortcuts
対応方法は2種類
● XMLで指定する
● アプリ起動中に動的に編集
XMLでショートカットを追加
1. AndroidManifest.xmlのActivityに
<meta-data>を追加する
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<meta-data
android:name="android.app.shortcuts"
android:resource="@xml/shortcuts"/>
</activity>
XMLでショートカットを追加
<shortcuts>
<shortcut>
<intent/>
<categories />
</shortcut>
</shortcuts>
2. xml/shortcuts.xmlでショートカットを定義
XMLでショートカットを追加
<shortcuts>
<shortcut>
<intent/>
<categories />
</shortcut>
</shortcuts>
2. xml/shortcuts.xmlでショートカットを定義
←ルート要素
←ショートカットの情報
←投げるIntent
←おまじない
XMLでショートカットを追加
<shortcut
android:shortcutId="compose"
android:enabled="true"
android:icon="@drawable/compose_icon"
android:shortcutShortLabel="短い名前"
android:shortcutLongLabel="長い名前"
android:shortcutDisabledMessage="無効時のメッセージ">
</shortcut>
アプリ起動中にショートカット追加
例えば、チャットアプリで「この人に送信」ショート
カットを作りたい時などに使う
アプリ起動中にショートカット追加
作り方
1. ShortcutManagerを取り出す
→getSystemService(ShortcutManager.class);
2. ShortcutInfoを作る
3. manager.setDynamicShortcuts()
アプリ起動中にショートカット追加
2. ShortcutInfoを作る
ShortcutInfo shortcut =
new ShortcutInfo.Builder(getActivity(), "id1")
.setShortLabel("アイコン時の名前")
.setLongLabel("ロングタップ時の名前")
.setIcon(Icon.createWithResource(getActivity(),
R.mipmap.ic_launcher))
.setIntent(it)
.build();
ベストプラクティス
● デザインガイドラインに従おう
● 4つまでにしよう
● 説明は短い方が10文字。長い方は25文字。
● 同じ作業をアプリからでもできるように
○ ショートカットに対応してないホームアプリもあるよ
● updateは意味が同じときのみにしよう
● 動的に追加したものはリストアされないよ
くわしくは
https://developer.android.com/preview/shortcuts.html
定数追加
● int DENSITY_260
● int DENSITY_300
● int DENSITY_340
Android Wear用
「実デバイスがこれに近いから、追加しといたでー」
android.util.DisplayMetrics
Android Wear系
WearableExtenderにメソッド追加
● setHintDisplayActionInline()
● getHintDisplayActionInline()
API 25のWearエミュレーターは
まだ、ない。。。
InputContentInfo という新キャラ
commitContent()というメソッドがいろんなクラス/イ
ンターフェースに追加されている
android.view.inputmethod
Image Keyboard Support
引用元:https://developer.android.com/preview/image-keyboard.html
アニメGIFが
貼れる
ん?
これ
どっかで
見たことない?
引用元:https://developer.apple.com/imessage/
EditTextで対応する必要があります。
コード量が結構あるので
https://developer.android.com/preview/image-k
eyboard.html
をみてね
どう実装するの?
API 24 → 25のdiffまとめ
奇抜なdiffは実はありませんでした
https://developer.android.com/preview/
api-overview.html
に書いてある通りのdiffといった感じ
API Diff
23
↓
24
追加パッケージ
● android.icu.lang
● android.icu.math
● android.icu.text
● android.icu.util
● android.os.health
● android.service.quicksettings
● android.service.vr
● java.util.function
● java.util.stream
※変更のあるパッケージはたくさん
7.0の新機能は
もう
ご存知だと思うので。。。
Contextクラス
boolean deleteSharedPreferences(String)
→指定したSharedPreferenceファイルを
削除する
それ、無かったんかい
DatePickerDialogクラス
次のコンストラクタが追加
DatePickerDialog (Context context)
それ、無かったんかい
→現在時刻でダイアログ作るよ!
みんな大好きFragmentに次のメソッド追加
void onAttachFragment(Fragment)
それ、無かったんかい
→Fragment in Fragmentで、子Fragmentを貼り
付けようとする時に呼ばれるよ!
引数には、これから貼り付ける子Fragmentが
渡されるよ!
BackupAgentに次のメソッド追加
void onQuotaExceeded(long, long)
それ、無かったんかい
→バックアップしようとして、容量オーバーだった時
に呼ばれるよ!
GradientDrawableに大量のgetter
● ColorStateList getColor()
● int[] getColors()
● float[] getCornerRadii()
● float getCornerRadius()
● float getGradientCenterX()
● float getGradientCenterY()
● int getGradientType()
● int getShape()
● boolean getUseLevel()
それ、無かったんかい
Deprecated
テストといえばandroid.testパッケージだよね!
android.testは全滅!
サポートライブラリを使うのが主流
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void useAppContext() throws Exception {
// Context of the app under test.
Context appContext =
InstrumentationRegistry.getTargetContext();
assertEquals("package", appContext.getPackageName());
}
}
テストはどうなる?
たのしめました?
● API 23→24の大きな差分はJava 8
● API 24→25は純粋な機能追加
● API Diffを見ると、地道な改善の跡が発見でき
るよ!
● こっそりDeprecatedになったのもわかるよ!
まとめ
モケラを
よろしくおねがいします

More Related Content

What's hot

最近のモバイル新Osを比較してみた
最近のモバイル新Osを比較してみた最近のモバイル新Osを比較してみた
最近のモバイル新Osを比較してみた
Akio Kondo
 
Hello androidannotations
Hello androidannotationsHello androidannotations
Hello androidannotations
Shoichi Takagi
 

What's hot (20)

[potatotips #18] Android M Developer Preview & Wear 最新トピック
[potatotips #18] Android M Developer Preview & Wear 最新トピック[potatotips #18] Android M Developer Preview & Wear 最新トピック
[potatotips #18] Android M Developer Preview & Wear 最新トピック
 
Alternative WebView
Alternative WebViewAlternative WebView
Alternative WebView
 
Android dev summit 2019 recap
Android dev summit 2019 recapAndroid dev summit 2019 recap
Android dev summit 2019 recap
 
[展開用]Android wear abc2014w-kenichikambara
[展開用]Android wear abc2014w-kenichikambara[展開用]Android wear abc2014w-kenichikambara
[展開用]Android wear abc2014w-kenichikambara
 
Can we live in a pure Swift world?
Can we live in a pure Swift world?Can we live in a pure Swift world?
Can we live in a pure Swift world?
 
Android6.0の機能まとめ 実機でサンプルを動かしてみた
Android6.0の機能まとめ 実機でサンプルを動かしてみたAndroid6.0の機能まとめ 実機でサンプルを動かしてみた
Android6.0の機能まとめ 実機でサンプルを動かしてみた
 
最近のモバイル新Osを比較してみた
最近のモバイル新Osを比較してみた最近のモバイル新Osを比較してみた
最近のモバイル新Osを比較してみた
 
Android Wearアプリ開発経験談
Android Wearアプリ開発経験談Android Wearアプリ開発経験談
Android Wearアプリ開発経験談
 
Android Wearアプリ プレビュー版→正式版への移植ガイド
Android Wearアプリ プレビュー版→正式版への移植ガイドAndroid Wearアプリ プレビュー版→正式版への移植ガイド
Android Wearアプリ プレビュー版→正式版への移植ガイド
 
Azure の App Center でアプリの 使用状況を分析する
Azure の App Center でアプリの 使用状況を分析するAzure の App Center でアプリの 使用状況を分析する
Azure の App Center でアプリの 使用状況を分析する
 
Android Wearの未来予想図
Android Wearの未来予想図Android Wearの未来予想図
Android Wearの未来予想図
 
[デブサミ2015]Androidで広がる世界&エンジニアとしての歩み
[デブサミ2015]Androidで広がる世界&エンジニアとしての歩み[デブサミ2015]Androidで広がる世界&エンジニアとしての歩み
[デブサミ2015]Androidで広がる世界&エンジニアとしての歩み
 
20161014 vrarmr勉強会発表資料 slideshare
20161014 vrarmr勉強会発表資料 slideshare20161014 vrarmr勉強会発表資料 slideshare
20161014 vrarmr勉強会発表資料 slideshare
 
Tizen application
Tizen applicationTizen application
Tizen application
 
Hello androidannotations
Hello androidannotationsHello androidannotations
Hello androidannotations
 
Google i/o extend japan2014
Google i/o extend japan2014Google i/o extend japan2014
Google i/o extend japan2014
 
組み込みエンジニアから見たモバイル開発環境の変遷
組み込みエンジニアから見たモバイル開発環境の変遷組み込みエンジニアから見たモバイル開発環境の変遷
組み込みエンジニアから見たモバイル開発環境の変遷
 
Android Wearと戦ってみた
Android Wearと戦ってみたAndroid Wearと戦ってみた
Android Wearと戦ってみた
 
minneにおけるテスト〜リリース〜リリース後にやっている事の紹介
minneにおけるテスト〜リリース〜リリース後にやっている事の紹介minneにおけるテスト〜リリース〜リリース後にやっている事の紹介
minneにおけるテスト〜リリース〜リリース後にやっている事の紹介
 
用途に合わせたアニメーションの実装方法
用途に合わせたアニメーションの実装方法用途に合わせたアニメーションの実装方法
用途に合わせたアニメーションの実装方法
 

Viewers also liked

Viewers also liked (19)

Go conference 2017 Lightning talk
Go conference 2017 Lightning talkGo conference 2017 Lightning talk
Go conference 2017 Lightning talk
 
My client wanted their apps synced, and I made it with Go
My client wanted their apps synced, and I made it with GoMy client wanted their apps synced, and I made it with Go
My client wanted their apps synced, and I made it with Go
 
Goをカンストさせる話
Goをカンストさせる話Goをカンストさせる話
Goをカンストさせる話
 
Android 7.0 Nougat マルチウィンドウ解説+α
Android 7.0 Nougat マルチウィンドウ解説+αAndroid 7.0 Nougat マルチウィンドウ解説+α
Android 7.0 Nougat マルチウィンドウ解説+α
 
20161026 What is Nougat
20161026  What is Nougat20161026  What is Nougat
20161026 What is Nougat
 
Coding in the context era
Coding in the context eraCoding in the context era
Coding in the context era
 
Introduction to Python 3.4 as of beta 1
Introduction to Python 3.4 as of beta 1Introduction to Python 3.4 as of beta 1
Introduction to Python 3.4 as of beta 1
 
最新AndroidとIoTプラットフォームの今 (WJ2016)
最新AndroidとIoTプラットフォームの今 (WJ2016)最新AndroidとIoTプラットフォームの今 (WJ2016)
最新AndroidとIoTプラットフォームの今 (WJ2016)
 
Androidの新ビルドシステム
Androidの新ビルドシステムAndroidの新ビルドシステム
Androidの新ビルドシステム
 
Inside Android's UI
Inside Android's UIInside Android's UI
Inside Android's UI
 
PHP7を魔改造した話
PHP7を魔改造した話PHP7を魔改造した話
PHP7を魔改造した話
 
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspectiveAndroid graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
 
Pythonで画面付きのアプリを作成する
Pythonで画面付きのアプリを作成するPythonで画面付きのアプリを作成する
Pythonで画面付きのアプリを作成する
 
Android概要資料
Android概要資料Android概要資料
Android概要資料
 
Android media framework overview
Android media framework overviewAndroid media framework overview
Android media framework overview
 
Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2
Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2
Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2
 
Design and Concepts of Android Graphics
Design and Concepts of Android GraphicsDesign and Concepts of Android Graphics
Design and Concepts of Android Graphics
 
Vue.js with Go
Vue.js with GoVue.js with Go
Vue.js with Go
 
条件式評価器の実装による管理ツールの抽象化
条件式評価器の実装による管理ツールの抽象化条件式評価器の実装による管理ツールの抽象化
条件式評価器の実装による管理ツールの抽象化
 

Similar to Jag201610 API Diffで見るNougat

Androidレイアウトのスタンダードアプローチ
AndroidレイアウトのスタンダードアプローチAndroidレイアウトのスタンダードアプローチ
Androidレイアウトのスタンダードアプローチ
Takao Sumitomo
 
ABC2012Spring 20120324
ABC2012Spring 20120324ABC2012Spring 20120324
ABC2012Spring 20120324
Tak Inamori
 
[Jagys]android41+開発ツール紹介
[Jagys]android41+開発ツール紹介[Jagys]android41+開発ツール紹介
[Jagys]android41+開発ツール紹介
Kenichi Kambara
 
Google mapとgps機能を使ってみた。
Google mapとgps機能を使ってみた。Google mapとgps機能を使ってみた。
Google mapとgps機能を使ってみた。
Eiichi Tsuru
 

Similar to Jag201610 API Diffで見るNougat (20)

モバイルVR「Daydream」でVRの世界にふれてみる
モバイルVR「Daydream」でVRの世界にふれてみるモバイルVR「Daydream」でVRの世界にふれてみる
モバイルVR「Daydream」でVRの世界にふれてみる
 
Devsumi2013 15-C-1 実践!スマホアプリのマネタイズ!! ~マーケット把握術と iPhone&Androidプログラミングテクニック~
Devsumi2013 15-C-1 実践!スマホアプリのマネタイズ!! ~マーケット把握術と iPhone&Androidプログラミングテクニック~Devsumi2013 15-C-1 実践!スマホアプリのマネタイズ!! ~マーケット把握術と iPhone&Androidプログラミングテクニック~
Devsumi2013 15-C-1 実践!スマホアプリのマネタイズ!! ~マーケット把握術と iPhone&Androidプログラミングテクニック~
 
[Io2012]android41+開発ツール紹介
[Io2012]android41+開発ツール紹介[Io2012]android41+開発ツール紹介
[Io2012]android41+開発ツール紹介
 
20121123 アド部定例会 unityアプリに広告を入れる方法
20121123 アド部定例会 unityアプリに広告を入れる方法20121123 アド部定例会 unityアプリに広告を入れる方法
20121123 アド部定例会 unityアプリに広告を入れる方法
 
Inside Android N
Inside Android NInside Android N
Inside Android N
 
20220303_SAP AppGyverとSAP CAPで簡単なアプリを作ってみた~市民開発者とプロ開発者で作業を分担してみた~
20220303_SAP AppGyverとSAP CAPで簡単なアプリを作ってみた~市民開発者とプロ開発者で作業を分担してみた~20220303_SAP AppGyverとSAP CAPで簡単なアプリを作ってみた~市民開発者とプロ開発者で作業を分担してみた~
20220303_SAP AppGyverとSAP CAPで簡単なアプリを作ってみた~市民開発者とプロ開発者で作業を分担してみた~
 
HTML5 のお話
HTML5 のお話HTML5 のお話
HTML5 のお話
 
Androidレイアウトのスタンダードアプローチ
AndroidレイアウトのスタンダードアプローチAndroidレイアウトのスタンダードアプローチ
Androidレイアウトのスタンダードアプローチ
 
Android 11 update notes
Android 11 update notesAndroid 11 update notes
Android 11 update notes
 
「Camelog」Android開発秘話
「Camelog」Android開発秘話「Camelog」Android開発秘話
「Camelog」Android開発秘話
 
ABC2012Spring 20120324
ABC2012Spring 20120324ABC2012Spring 20120324
ABC2012Spring 20120324
 
基調講演「モバイル市場とこれからの動向」~日本Androidの会の歩みと絡めて~
基調講演「モバイル市場とこれからの動向」~日本Androidの会の歩みと絡めて~基調講演「モバイル市場とこれからの動向」~日本Androidの会の歩みと絡めて~
基調講演「モバイル市場とこれからの動向」~日本Androidの会の歩みと絡めて~
 
アプリリリース後に後悔しないための20のこと
アプリリリース後に後悔しないための20のことアプリリリース後に後悔しないための20のこと
アプリリリース後に後悔しないための20のこと
 
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
 Sansan Tech Meetup Androidエンジニアが振り返る Google I/O   Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
 
逢甲網路行銷實務分享
逢甲網路行銷實務分享逢甲網路行銷實務分享
逢甲網路行銷實務分享
 
!(びっくり)するかもしれないヤフーでのアプリ開発
!(びっくり)するかもしれないヤフーでのアプリ開発!(びっくり)するかもしれないヤフーでのアプリ開発
!(びっくり)するかもしれないヤフーでのアプリ開発
 
[Jagys]android41+開発ツール紹介
[Jagys]android41+開発ツール紹介[Jagys]android41+開発ツール紹介
[Jagys]android41+開発ツール紹介
 
開発を効率的に進めるられるまでの道程
開発を効率的に進めるられるまでの道程開発を効率的に進めるられるまでの道程
開発を効率的に進めるられるまでの道程
 
Android登場10年目 ~Androidのイマを魅る~ 【ABC2017A】
Android登場10年目 ~Androidのイマを魅る~ 【ABC2017A】Android登場10年目 ~Androidのイマを魅る~ 【ABC2017A】
Android登場10年目 ~Androidのイマを魅る~ 【ABC2017A】
 
Google mapとgps機能を使ってみた。
Google mapとgps機能を使ってみた。Google mapとgps機能を使ってみた。
Google mapとgps機能を使ってみた。
 

Recently uploaded

Recently uploaded (7)

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

Jag201610 API Diffで見るNougat