Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Android Marshmallow demos
Search
Yossi Elkrief
September 09, 2015
Programming
0
31
Android Marshmallow demos
GDG Meetup -
Review some of the Android Marshmallow features, code and discuss best practices.
Yossi Elkrief
September 09, 2015
Tweet
Share
More Decks by Yossi Elkrief
See All by Yossi Elkrief
We all need some Safety net...
matrixy
0
100
From data to View
matrixy
0
88
Android Memory , Where is all My RAM
matrixy
0
90
DroidCon TLV 2015 - Hey android, mirror mirror all day long
matrixy
0
58
Gdg android design for ui developers
matrixy
0
32
Fragments anyone ?
matrixy
0
28
Other Decks in Programming
See All in Programming
ISUCON研修おかわり会 講義スライド
arfes0e2b3c
1
470
Rails Frontend Evolution: It Was a Setup All Along
skryukov
0
280
MDN Web Docs に日本語翻訳でコントリビュートしたくなる
ohmori_yusuke
1
130
AIともっと楽するE2Eテスト
myohei
8
3k
React は次の10年を生き残れるか:3つのトレンドから考える
oukayuka
7
2.4k
Python型ヒント完全ガイド 初心者でも分かる、現代的で実践的な使い方
mickey_kubo
1
240
レベル1の開発生産性向上に取り組む − 日々の作業の効率化・自動化を通じた改善活動
kesoji
0
300
RailsGirls IZUMO スポンサーLT
16bitidol
0
200
ソフトウェア品質を数字で捉える技術。事業成長を支えるシステム品質の マネジメント
takuya542
2
15k
Google Agent Development Kit でLINE Botを作ってみた
ymd65536
2
260
iOS 26にアップデートすると実機でのHot Reloadができない?
umigishiaoi
0
140
効率的な開発手段として VRTを活用する
ishkawa
0
160
Featured
See All Featured
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Why Our Code Smells
bkeepers
PRO
337
57k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Designing for Performance
lara
610
69k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
Code Reviewing Like a Champion
maltzj
524
40k
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
How to Ace a Technical Interview
jacobian
278
23k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.7k
Transcript
Android Marshmallow +YossiElkrief MaTriXy Tikal Knowledge +NirHartmann nirhart Drippler
Android Marshmallow +YossiElkrief MaTriXy Tikal Knowledge +NirHartmann nirhart Drippler
Android Marshmallow +YossiElkrief MaTriXy Tikal Knowledge +NirHartmann nirhart Drippler
Demos Seeing is just the beginning
App Permissions
Visit The Permission Lab Runtime permissions
Voice Interactions
Getting follow-up user input • Music App • “play some
music” • “what genre?” • Home Automation App • “OK Google, turn on the lights” • “which room?” • Verifying that an activity should complete • “Are you sure?”
Voice Interactions VoiceInteractor used for response prompting and confirmation
<activity android:name=“com.demoapps.activities.DemoVoice”> <intent-filter> <action android:name=“com.demoapps.DEMO_ACTION_INTENT” /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.VOICE" /> </intent-filter> </activity>
Voice Interactions class DemoVoice extends Activity { @Override public void
onResume() { if (isVoiceInteraction()) { // do our voice stuff here } finish(); } }
Voice Interactions class VoiceConfirm extends VoiceInteraction.ConfirmationRequest { public VoiceConfirm(String
prompt) { super(prompt, null); } @Override public void onConfirmationResult( boolean confirmed, Bundle null) { if (confirmed) { // do voice stuff } finish(); } }; class DemoVoice extends Activity { @Override public void onResume() { if (isVoiceInteraction()) { getVoiceInteractor(). sendRequest(new VoiceConfirm(userPromptString)); } else { finish(); } } }
Now On Tap
“Google's 'Now on Tap' is Android's next killer feature” (CNET)
“Google Now on Tap is the coolest Android feature” (ANDROIDPIT) “The next evolution of the digital concierge” (Tech Republic)
None
None
None
• Scans your screen only when you press and hold
the Home button • Fully opt-in feature • Work out of the box with any app
FLAG_SECURE AssistContent Activity.onProvideAssistData(Bundle) Application.OnProvideAssistDataListener
Android Backup RESTORATION SOFTWARE
Presented in Google IO 2015 by Christiaan Prins and Mike
Procopio
Presented in Google IO 2015 by Christiaan Prins and Mike
Procopio
Presented in Google IO 2015 by Christiaan Prins and Mike
Procopio
Presented in Google IO 2015 by Christiaan Prins and Mike
Procopio
Presented in Google IO 2015 by Christiaan Prins and Mike
Procopio
Presented in Google IO 2015 by Christiaan Prins and Mike
Procopio
Notifications Look ma, We got an update
Icons in Notifications Presented in Google IO 2015 Notification myNotification
= new Notification.Builder(context) .setSmallIcon(noti_icon).build(); Icon noti_icon = Icon.createWithResource(context, R.drawable.app_ic_notification);
Icons in Notifications Presented in Google IO 2015 Notification myNotification
= new Notification.Builder(context) .setSmallIcon(noti_icon).build(); Icon noti_icon = Icon.createWithResource(context, R.drawable.app_ic_notification); Icon noti_icon = Icon.createWithBitmap(myIconBitmap);
Icons in Notifications Presented in Google IO 2015 Notification myNotification
= new Notification.Builder(context) .setSmallIcon(noti_icon).build(); Icon noti_icon = Icon.createWithResource(context, R.drawable.app_ic_notification); Icon noti_icon = Icon.createWithBitmap(myIconBitmap); 72°
android.graphics.drawable.Icon Presented in Google IO 2015 Can be either: Drawable
resource id Bitmap PNG or JPEG represented by a byte[]
android.graphics.drawable.Icon Presented in Google IO 2015 Pay Attention to guidelines
https://www.google.com/design/spec/style/icons.html
Text Now you can float
Text Selection Easier selection Floating palette with action items Default
for TextView Other views set ActionMode.TYPE_FLOATING Presented in Google IO 2015
Higher Quality Text Formatting TextView.setBreakStrategy(int); TextView.setHyphenationFrequency(int); TextView.setIndents(int[] left, int[] right);
Presented in Google IO 2015
Higher Quality Text Formatting TextView.setBreakStrategy(int); TextView.setHyphenationFrequency(int); TextView.setIndents(int[] left, int[] right);
Presented in Google IO 2015
App Linking SEAMLESS HANDOFF FROM WEB TO APP
[{ "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "com.example.myapp", "sha256_cert_fingerprints":
["01:23:45:67:89:AB:CD:..."] } }] https://example.com/.well-known/statements.json Presented in Google IO 2015
[{ "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "com.example.myapp", "sha256_cert_fingerprints":
["01:23:45:67:89:AB:CD:..."] } }] https://example.com/.well-known/statements.json keytool -list -v -keystore release.keystore Presented in Google IO 2015
Direct Share BECAUSE SHARING IS CARING
Direct Share <activity ... > <intent-filter> <action android:name="android.intent.action.SEND" /> </intent-filter>
<meta-data android:name="android.service.chooser.chooser_target_service" android:value=".MyService" /> </activity>
Direct Share <activity ... > <intent-filter> <action android:name="android.intent.action.SEND" /> </intent-filter>
<meta-data android:name="android.service.chooser.chooser_target_service" android:value=".MyService" /> </activity>
Direct Share <activity ... > <intent-filter> <action android:name="android.intent.action.SEND" /> </intent-filter>
<meta-data android:name="android.service.chooser.chooser_target_service" android:value=".MyService" /> </activity> <service android:name=".MyService" android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE"> <intent-filter> <action android:name="android.service.chooser.ChooserTargetService" /> </intent-filter> </service>
Direct Share <activity ... > <intent-filter> <action android:name="android.intent.action.SEND" /> </intent-filter>
<meta-data android:name="android.service.chooser.chooser_target_service" android:value=".MyService" /> </activity> <service android:name=".MyService" android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE"> <intent-filter> <action android:name="android.service.chooser.ChooserTargetService" /> </intent-filter> </service> public class MyService extends ChooserTargetService { @Override public List<ChooserTarget> onGetChooserTargets(ComponentName name, IntentFilter filter); { // ... } }
Direct Share <activity ... > <intent-filter> <action android:name="android.intent.action.SEND" /> </intent-filter>
<meta-data android:name="android.service.chooser.chooser_target_service" android:value=".MyService" /> </activity> <service android:name=".MyService" android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE"> <intent-filter> <action android:name="android.service.chooser.ChooserTargetService" /> </intent-filter> </service> public class MyService extends ChooserTargetService { @Override public List<ChooserTarget> onGetChooserTargets(ComponentName name, IntentFilter filter); { // ... } }
Thank You! +YossiElkrief MaTriXy +NirHartmann nirhart some slides were presented
in Google IO 2015