SlideShare a Scribd company logo
1 of 82
Download to read offline
Supporting Multiple
Android Device Definitions
Chiu-Ki Chan
@chiuki
bit.ly/muland
@chiuki@chiuki
So many devices!
@chiuki@chiuki
Infinite screen sizes!
@chiuki@chiuki
Responsive
+
Progressive
Hello World
@chiuki
@chiuki
@chiuki
@chiuki
@chiuki
@chiuki
@chiuki
Declarative Layout
@chiuki
@chiuki
@chiuki
(x,y)
@chiuki
(x,y)
@chiuki
Center
@chiuki@chiuki
Center
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/start" />
@chiuki
@chiuki@chiuki
Proportional Layout
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/image1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<ImageView
android:id="@+id/image2"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
</LinearLayout>
@chiuki
@chiuki
Divider
@chiuki@chiuki
Divider
<LinearLayout>
<ImageView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@android:color/black" />
<ImageView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
</LinearLayout>
@chiuki@chiuki
Divider
<LinearLayout>
<ImageView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@android:color/black" />
<ImageView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
</LinearLayout>
@chiuki
dp
@chiuki
dpDensity-independent pixel
@chiuki
@chiuki
@chiuki@chiuki
res/layout-land
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<ImageView
android:id="@+id/image1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<ImageView
android:id="@+id/image2"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
</LinearLayout>
@chiuki
Resource Folders
@chiuki@chiuki
Resource Folders
Type Variation
layout
values
drawable
menu
Language & Region: en, fr, fr-rCA
Screen size: small, large, xlarge, sw320dp, h720dp
Screen orientation: port, land
Screen density: ldpi, mdpi, hdpi, xhdpi, nodpi, tvdpi
Platform version: v4, v11, v14, v21
UI mode: car, desk, television, appliance
http://developer.android.com/guide/topics/resources/providing-resources.html
@chiuki@chiuki
Resource Folders
Type Variation
layout
values
drawable
menu
Language & Region: en, fr, fr-rCA
Screen size: small, large, xlarge, sw320dp, h720dp
Screen orientation: port, land
Screen density: ldpi, mdpi, hdpi, xhdpi, nodpi, tvdpi
Platform version: v4, v11, v14, v21
UI mode: car, desk, television, appliance
http://developer.android.com/guide/topics/resources/providing-resources.html
res/layout-land/activity_main.xml
@chiuki@chiuki
Resource Folders
Type Variation
layout
values
drawable
menu
Language & Region: en, fr, fr-rCA
Screen size: small, large, xlarge, sw320dp, h720dp
Screen orientation: port, land
Screen density: ldpi, mdpi, hdpi, xhdpi, nodpi, tvdpi
Platform version: v4, v11, v14, v21
UI mode: car, desk, television, appliance
http://developer.android.com/guide/topics/resources/providing-resources.html
res/drawable-hdpi/ic_launcher.png
@chiuki@chiuki
Resource Folders
Type Variation
layout
values
drawable
menu
Language & Region: en, fr, fr-rCA
Screen size: small, large, xlarge, sw320dp, h720dp
Screen orientation: port, land
Screen density: ldpi, mdpi, hdpi, xhdpi, nodpi, tvdpi
Platform version: v4, v11, v14, v21
UI mode: car, desk, television, appliance
http://developer.android.com/guide/topics/resources/providing-resources.html
res/drawable-large-land/splash.png
@chiuki
res/drawable-large-land/splash.png
@chiuki
res/drawable/splash.xml
@chiuki
res/drawable/splash.xml
XML drawable
@chiuki@chiuki
XML shape
<shape android:shape="rectangle" >
<gradient
android:startColor="#063"
android:endColor="#030"
android:angle="270" />
</shape>
@chiuki@chiuki
Gradient
@chiuki@chiuki
Gradient
@chiuki@chiuki
Pattern
@chiuki@chiuki
Tiles
@chiuki@chiuki
Tiles
@chiuki@chiuki
Tiling background
<bitmap
android:src="@drawable/tile"
android:tileMode="repeat"
android:dither="true" />
res/drawable/background.xml
@chiuki@chiuki
<bitmap
android:src="@drawable/tile"
android:tileMode="repeat"
android:dither="true" />
res/drawable/background.xml
tile.png
Tiling background
@chiuki@chiuki
<View
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background" />
res/layout/activity_main.xml
res/drawable/background.xml
Tiling background
@chiuki@chiuki
Tile mode
clamp
Replicates the edge color
repeat
Repeats the bitmap in both direction
mirror
Repeats with alternating mirror images
@chiuki@chiuki
GridView
@chiuki@chiuki
Auto fit columns
<GridView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="auto_fit"
android:columnWidth="@dimen/workbook_column_width"
android:padding="@dimen/workbook_padding"
android:horizontalSpacing="@dimen/workbook_spacing"
android:verticalSpacing="@dimen/workbook_spacing"
android:scrollbarStyle="outsideOverlay" />
@chiuki@chiuki
Auto fit columns
<GridView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="auto_fit"
android:columnWidth="@dimen/workbook_column_width"
android:padding="@dimen/workbook_padding"
android:horizontalSpacing="@dimen/workbook_spacing"
android:verticalSpacing="@dimen/workbook_spacing"
android:scrollbarStyle="outsideOverlay" />
@chiuki@chiuki
Auto fit columns
<GridView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="auto_fit"
android:columnWidth="@dimen/workbook_column_width"
android:padding="@dimen/workbook_padding"
android:horizontalSpacing="@dimen/workbook_spacing"
android:verticalSpacing="@dimen/workbook_spacing"
android:scrollbarStyle="outsideOverlay" />
@chiuki@chiuki
<resources>
<dimen name="workbook_padding">8dp</dimen>
<dimen name="workbook_spacing">12dp</dimen>
<dimen name="workbook_column_width">120dp</dimen>
<resources>
res/values/dimens.xml
values/dimen.xml
@chiuki@chiuki
values-large/dimen.xml
<resources>
<dimen name="workbook_padding">32dp</dimen>
<dimen name="workbook_spacing">18dp</dimen>
<dimen name="workbook_column_width">180dp</dimen>
<resources>
res/values-large/dimens.xml
@chiuki@chiuki
7-inch
@chiuki@chiuki
Phone
@chiuki@chiuki
Fragments
github.com/codepath/android-master-detail-demo
Progressive
@chiuki@chiuki
Resource Folders
Type Variation
layout
values
drawable
menu
Language & Region: en, fr, fr-rCA
Screen size: small, large, xlarge, sw320dp, h720dp
Screen orientation: port, land
Screen density: ldpi, mdpi, hdpi, xhdpi, nodpi, tvdpi
Platform version: v4, v11, v14, v21
UI mode: car, desk, television, appliance
http://developer.android.com/guide/topics/resources/providing-resources.html
@chiuki@chiuki
Resource Folders
Type Variation
layout
values
drawable
menu
Language & Region: en, fr, fr-rCA
Screen size: small, large, xlarge, sw320dp, h720dp
Screen orientation: port, land
Screen density: ldpi, mdpi, hdpi, xhdpi, nodpi, tvdpi
Platform version: v4, v11, v14, v21
UI mode: car, desk, television, appliance
http://developer.android.com/guide/topics/resources/providing-resources.html
@chiuki@chiuki
Ripples
@chiuki@chiuki
Ripples
@chiuki@chiuki
drawable-v21
<ripple android:color="@color/colorAccent">
<item>
<shape android:shape="rectangle">
<solid android:color="@color/colorPrimary" />
</shape>
</item>
</ripple>
res/drawable-v21/background.xml
@chiuki@chiuki
drawable as default
<selector>
<item android:state_pressed="true"
android:drawable="@color/colorAccent" />
<item android:drawable="@color/colorPrimary" />
</selector>
res/drawable/background.xml
@chiuki@chiuki
android:background
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="drawable/background"
android:text="@string/click_me" />
@chiuki@chiuki
Progressive
@chiuki@chiuki
API level
@chiuki@chiuki
Detect API level
android.os.Build.VERSION.SDK_INT
@chiuki@chiuki
// Default value
int heapSize = 16;
// Detect OS version
int sdk = Integer.parseInt(Build.VERSION.SDK_INT);
// Progressive enhancement for newer devices
if (sdk >= Build.VERSION_CODES_ECLAIR) {
heapSize = getHeapSize(this);
}
Progressive
@chiuki@chiuki
getHeapSize
public int getHeapSize() {
ActivityManager activityManager = (ActivityManager)
getSystemService(Context.ACTIVITY_SERVICE);
return activityManager.getMemoryClass();
}
@chiuki@chiuki
Ship new functionality with your app!
Support Library
@chiuki
Support Library
Fragment
TaskStackBuilder
LruCache
ViewPager
DrawerLayout
SlidingPaneLayout
Loader
AppCompat
VectorDrawable
RecyclerView
@chiuki
AppCompat
Material Design
@chiuki
Support library only
RecyclerView
Summary
@chiuki@chiuki
Summary
Responsive layout
Declarative layout
Density-independent pixels (dp)
Resource folders
XML drawables
Progressive functionality
Resource folders
Version check
Support library
Slides
bit.ly/muland
@chiuki@chiuki
Thank you!
Learn more
developer.android.com/training/multiscreen
is.gd/FluidAndroidLayouts
is.gd/BeautifulAndroid
pluralsight.com/authors/chiuki-chan
Stay in touch
tinyletter.com/sqisland
blog.sqisland.com
twitter.com/chiuki
Slides
bit.ly/muland
@chiuki@chiuki
@chiuki@chiuki
360|AnDev Core Track
• Activities in the Wild: Exploring the Activity
Lifecycle
• Fragments: What are they good for
• Async Task, Threads, Pools and Executors
• Measure, Layout, Draw, Repeat: Custom Views
and ViewGroups
• A Practical Guide to Material Design
implementation for Android Developers
• Libraries I wish I knew about when I started
• Intro to iOS for Android developers
@chiuki@chiuki
Discount Code:
DroidCommunity

More Related Content

More from Chiu-Ki Chan

Yes, you can draw with your engineering brain
Yes, you can draw with your engineering brainYes, you can draw with your engineering brain
Yes, you can draw with your engineering brainChiu-Ki Chan
 
How to be an Android Expert: Women Who Code Connect
How to be an Android Expert: Women Who Code ConnectHow to be an Android Expert: Women Who Code Connect
How to be an Android Expert: Women Who Code ConnectChiu-Ki Chan
 
how-to-be-an-android-expert-wwcode
how-to-be-an-android-expert-wwcodehow-to-be-an-android-expert-wwcode
how-to-be-an-android-expert-wwcodeChiu-Ki Chan
 
How to be an Android Expert: Droidcon Berlin
How to be an Android Expert: Droidcon BerlinHow to be an Android Expert: Droidcon Berlin
How to be an Android Expert: Droidcon BerlinChiu-Ki Chan
 
How to be an Android Expert: Droidcon Boston
How to be an Android Expert: Droidcon BostonHow to be an Android Expert: Droidcon Boston
How to be an Android Expert: Droidcon BostonChiu-Ki Chan
 
How to Write a Conference Proposal
How to Write a Conference ProposalHow to Write a Conference Proposal
How to Write a Conference ProposalChiu-Ki Chan
 
How to be an Android Expert: Android Summit
How to be an Android Expert: Android SummitHow to be an Android Expert: Android Summit
How to be an Android Expert: Android SummitChiu-Ki Chan
 
Intro to Android for iOS developers
Intro to Android for iOS developersIntro to Android for iOS developers
Intro to Android for iOS developersChiu-Ki Chan
 
Hands-on Icon creation
Hands-on Icon creationHands-on Icon creation
Hands-on Icon creationChiu-Ki Chan
 
Develop your voice
Develop your voiceDevelop your voice
Develop your voiceChiu-Ki Chan
 
How to win hackathons, Ignite Google I/O 2012
How to win hackathons, Ignite Google I/O 2012How to win hackathons, Ignite Google I/O 2012
How to win hackathons, Ignite Google I/O 2012Chiu-Ki Chan
 
I have nothing to say, Ignite Where 2012
I have nothing to say, Ignite Where 2012I have nothing to say, Ignite Where 2012
I have nothing to say, Ignite Where 2012Chiu-Ki Chan
 

More from Chiu-Ki Chan (12)

Yes, you can draw with your engineering brain
Yes, you can draw with your engineering brainYes, you can draw with your engineering brain
Yes, you can draw with your engineering brain
 
How to be an Android Expert: Women Who Code Connect
How to be an Android Expert: Women Who Code ConnectHow to be an Android Expert: Women Who Code Connect
How to be an Android Expert: Women Who Code Connect
 
how-to-be-an-android-expert-wwcode
how-to-be-an-android-expert-wwcodehow-to-be-an-android-expert-wwcode
how-to-be-an-android-expert-wwcode
 
How to be an Android Expert: Droidcon Berlin
How to be an Android Expert: Droidcon BerlinHow to be an Android Expert: Droidcon Berlin
How to be an Android Expert: Droidcon Berlin
 
How to be an Android Expert: Droidcon Boston
How to be an Android Expert: Droidcon BostonHow to be an Android Expert: Droidcon Boston
How to be an Android Expert: Droidcon Boston
 
How to Write a Conference Proposal
How to Write a Conference ProposalHow to Write a Conference Proposal
How to Write a Conference Proposal
 
How to be an Android Expert: Android Summit
How to be an Android Expert: Android SummitHow to be an Android Expert: Android Summit
How to be an Android Expert: Android Summit
 
Intro to Android for iOS developers
Intro to Android for iOS developersIntro to Android for iOS developers
Intro to Android for iOS developers
 
Hands-on Icon creation
Hands-on Icon creationHands-on Icon creation
Hands-on Icon creation
 
Develop your voice
Develop your voiceDevelop your voice
Develop your voice
 
How to win hackathons, Ignite Google I/O 2012
How to win hackathons, Ignite Google I/O 2012How to win hackathons, Ignite Google I/O 2012
How to win hackathons, Ignite Google I/O 2012
 
I have nothing to say, Ignite Where 2012
I have nothing to say, Ignite Where 2012I have nothing to say, Ignite Where 2012
I have nothing to say, Ignite Where 2012
 

Recently uploaded

Stobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through TokenizationStobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through TokenizationStobox
 
Top 10 Squarespace Development Companies
Top 10 Squarespace Development CompaniesTop 10 Squarespace Development Companies
Top 10 Squarespace Development CompaniesTopCSSGallery
 
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - TechWebinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - TechProduct School
 
Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024
Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024
Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024Alkin Tezuysal
 
CyberSecurity - Computers In Libraries 2024
CyberSecurity - Computers In Libraries 2024CyberSecurity - Computers In Libraries 2024
CyberSecurity - Computers In Libraries 2024Brian Pichman
 
.NET 8 ChatBot with Azure OpenAI Services.pptx
.NET 8 ChatBot with Azure OpenAI Services.pptx.NET 8 ChatBot with Azure OpenAI Services.pptx
.NET 8 ChatBot with Azure OpenAI Services.pptxHansamali Gamage
 
UiPath Studio Web workshop series - Day 4
UiPath Studio Web workshop series - Day 4UiPath Studio Web workshop series - Day 4
UiPath Studio Web workshop series - Day 4DianaGray10
 
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptxEmil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptxNeo4j
 
The New Cloud World Order Is FinOps (Slideshow)
The New Cloud World Order Is FinOps (Slideshow)The New Cloud World Order Is FinOps (Slideshow)
The New Cloud World Order Is FinOps (Slideshow)codyslingerland1
 
UiPath Studio Web workshop series - Day 2
UiPath Studio Web workshop series - Day 2UiPath Studio Web workshop series - Day 2
UiPath Studio Web workshop series - Day 2DianaGray10
 
Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...DianaGray10
 
How to become a GDSC Lead GDSC MI AOE.pptx
How to become a GDSC Lead GDSC MI AOE.pptxHow to become a GDSC Lead GDSC MI AOE.pptx
How to become a GDSC Lead GDSC MI AOE.pptxKaustubhBhavsar6
 
Oracle Database 23c Security New Features.pptx
Oracle Database 23c Security New Features.pptxOracle Database 23c Security New Features.pptx
Oracle Database 23c Security New Features.pptxSatishbabu Gunukula
 
Flow Control | Block Size | ST Min | First Frame
Flow Control | Block Size | ST Min | First FrameFlow Control | Block Size | ST Min | First Frame
Flow Control | Block Size | ST Min | First FrameKapil Thakar
 
My key hands-on projects in Quantum, and QAI
My key hands-on projects in Quantum, and QAIMy key hands-on projects in Quantum, and QAI
My key hands-on projects in Quantum, and QAIVijayananda Mohire
 
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedInOutage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedInThousandEyes
 
Introduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its applicationIntroduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its applicationKnoldus Inc.
 
20140402 - Smart house demo kit
20140402 - Smart house demo kit20140402 - Smart house demo kit
20140402 - Smart house demo kitJamie (Taka) Wang
 
Scenario Library et REX Discover industry- and role- based scenarios
Scenario Library et REX Discover industry- and role- based scenariosScenario Library et REX Discover industry- and role- based scenarios
Scenario Library et REX Discover industry- and role- based scenariosErol GIRAUDY
 
AI Workshops at Computers In Libraries 2024
AI Workshops at Computers In Libraries 2024AI Workshops at Computers In Libraries 2024
AI Workshops at Computers In Libraries 2024Brian Pichman
 

Recently uploaded (20)

Stobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through TokenizationStobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
 
Top 10 Squarespace Development Companies
Top 10 Squarespace Development CompaniesTop 10 Squarespace Development Companies
Top 10 Squarespace Development Companies
 
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - TechWebinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
 
Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024
Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024
Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024
 
CyberSecurity - Computers In Libraries 2024
CyberSecurity - Computers In Libraries 2024CyberSecurity - Computers In Libraries 2024
CyberSecurity - Computers In Libraries 2024
 
.NET 8 ChatBot with Azure OpenAI Services.pptx
.NET 8 ChatBot with Azure OpenAI Services.pptx.NET 8 ChatBot with Azure OpenAI Services.pptx
.NET 8 ChatBot with Azure OpenAI Services.pptx
 
UiPath Studio Web workshop series - Day 4
UiPath Studio Web workshop series - Day 4UiPath Studio Web workshop series - Day 4
UiPath Studio Web workshop series - Day 4
 
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptxEmil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
 
The New Cloud World Order Is FinOps (Slideshow)
The New Cloud World Order Is FinOps (Slideshow)The New Cloud World Order Is FinOps (Slideshow)
The New Cloud World Order Is FinOps (Slideshow)
 
UiPath Studio Web workshop series - Day 2
UiPath Studio Web workshop series - Day 2UiPath Studio Web workshop series - Day 2
UiPath Studio Web workshop series - Day 2
 
Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...
 
How to become a GDSC Lead GDSC MI AOE.pptx
How to become a GDSC Lead GDSC MI AOE.pptxHow to become a GDSC Lead GDSC MI AOE.pptx
How to become a GDSC Lead GDSC MI AOE.pptx
 
Oracle Database 23c Security New Features.pptx
Oracle Database 23c Security New Features.pptxOracle Database 23c Security New Features.pptx
Oracle Database 23c Security New Features.pptx
 
Flow Control | Block Size | ST Min | First Frame
Flow Control | Block Size | ST Min | First FrameFlow Control | Block Size | ST Min | First Frame
Flow Control | Block Size | ST Min | First Frame
 
My key hands-on projects in Quantum, and QAI
My key hands-on projects in Quantum, and QAIMy key hands-on projects in Quantum, and QAI
My key hands-on projects in Quantum, and QAI
 
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedInOutage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
 
Introduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its applicationIntroduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its application
 
20140402 - Smart house demo kit
20140402 - Smart house demo kit20140402 - Smart house demo kit
20140402 - Smart house demo kit
 
Scenario Library et REX Discover industry- and role- based scenarios
Scenario Library et REX Discover industry- and role- based scenariosScenario Library et REX Discover industry- and role- based scenarios
Scenario Library et REX Discover industry- and role- based scenarios
 
AI Workshops at Computers In Libraries 2024
AI Workshops at Computers In Libraries 2024AI Workshops at Computers In Libraries 2024
AI Workshops at Computers In Libraries 2024
 

Supporting Multiple Android Device Definitions