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
33
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
110
From data to View
matrixy
0
90
Android Memory , Where is all My RAM
matrixy
0
93
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
Software Architecture
hschwentner
6
2.4k
三者三様 宣言的UI
kkagurazaka
0
320
ネストしたdata classの面倒な更新にさようなら!Lensを作って理解するArrowのOpticsの世界
shiita0903
1
180
Towards Transactional Buffering of CDC Events @ Flink Forward 2025 Barcelona Spain
hpgrahsl
0
120
NIKKEI Tech Talk#38
cipepser
0
340
iOSでSVG画像を扱う
kishikawakatsumi
0
180
なんでRustの環境構築してないのにRust製のツールが動くの? / Why Do Rust-Based Tools Run Without a Rust Environment?
ssssota
14
47k
TFLintカスタムプラグインで始める Terraformコード品質管理
bells17
2
500
Ktorで簡単AIアプリケーション
tsukakei
0
120
Developer Joy - The New Paradigm
hollycummins
1
400
data-viz-talk-cz-2025
lcolladotor
0
100
SODA - FACT BOOK(JP)
sodainc
1
9k
Featured
See All Featured
Six Lessons from altMBA
skipperchong
29
4k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
2.9k
A Tale of Four Properties
chriscoyier
161
23k
Gamification - CAS2011
davidbonilla
81
5.5k
Statistics for Hackers
jakevdp
799
220k
Testing 201, or: Great Expectations
jmmastey
46
7.7k
How to Ace a Technical Interview
jacobian
280
24k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Balancing Empowerment & Direction
lara
5
710
Being A Developer After 40
akosma
91
590k
How GitHub (no longer) Works
holman
315
140k
Optimizing for Happiness
mojombo
379
70k
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