SlideShare a Scribd company logo
Intro to Android
for iOS developers
Chiu-Ki Chan
@chiuki
@chiuki@chiuki
@chiuki@chiuki
Hello World
Layouts
Intents & Components
Hello World
@chiuki
@chiuki
ViewController
@chiuki
@chiuki
@chiuki
xib
@chiuki
@chiuki
@chiuki
@chiuki
@chiuki
IBOutlet
@chiuki
@chiuki@chiuki
Center
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
@chiuki
@chiuki@chiuki
Button
<Button
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/add" />
@chiuki
LinearLayout
@chiuki
@chiuki@chiuki
LinearLayout
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical" >
<TextView
android:id="@+id/count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="128sp" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/add"
android:onClick="add" />
</LinearLayout>
@chiuki@chiuki
IBAction
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical" >
<TextView
android:id="@+id/count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="128sp" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/add"
android:onClick="add" />
</LinearLayout>
@chiuki@chiuki
IBAction
public class MainActivity extends Activity {
private TextView countView;
private int count = 0;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
countView = (TextView) findViewById(R.id.count);
updateCount();
}
public void add(View v) {
count += 1;
updateCount();
}
private void updateCount() {
countView.setText(String.valueOf(count));
}
}
android:onClick="add"
@chiuki@chiuki
Update view
public class MainActivity extends Activity {
private TextView countView;
private int count = 0;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
countView = (TextView) findViewById(R.id.count);
updateCount();
}
public void add(View v) {
count += 1;
updateCount();
}
private void updateCount() {
countView.setText(String.valueOf(count));
}
}
@chiuki
@chiuki
@chiuki
RelativeLayout
@chiuki
@chiuki
@chiuki
@chiuki
@chiuki
<RelativeLayout>
<TextView
android:id="@+id/count"
android:layout_centerInParent="true" />
<Button
android:id="@+id/reset"
android:layout_below="@id/count"
android:layout_centerHorizontal="true"
android:text="@string/reset" />
<Button
android:layout_below="@id/count"
android:layout_toLeftOf="@id/reset"
android:text="@string/subtract" />
<Button
android:layout_below="@id/count"
android:layout_toRightOf="@id/reset"
android:text="@string/add" />
</RelativeLayout>
@chiuki
<RelativeLayout>
<TextView
android:id="@+id/count"
android:layout_centerInParent="true" />
<Button
android:id="@+id/reset"
android:layout_below="@id/count"
android:layout_centerHorizontal="true"
android:text="@string/reset" />
<Button
android:layout_below="@id/count"
android:layout_toLeftOf="@id/reset"
android:text="@string/subtract" />
<Button
android:layout_below="@id/count"
android:layout_toRightOf="@id/reset"
android:text="@string/add" />
</RelativeLayout>
@chiuki
<RelativeLayout>
<TextView
android:id="@+id/count"
android:layout_centerInParent="true" />
<Button
android:id="@+id/reset"
android:layout_below="@id/count"
android:layout_centerHorizontal="true"
android:text="@string/reset" />
<Button
android:layout_below="@id/count"
android:layout_toLeftOf="@id/reset"
android:text="@string/subtract" />
<Button
android:layout_below="@id/count"
android:layout_toRightOf="@id/reset"
android:text="@string/add" />
</RelativeLayout>
@chiuki
<RelativeLayout>
<TextView
android:id="@+id/count"
android:layout_centerInParent="true" />
<Button
android:id="@+id/reset"
android:layout_below="@id/count"
android:layout_centerHorizontal="true"
android:text="@string/reset" />
<Button
android:layout_toLeftOf="@id/reset"
android:text="@string/subtract" />
<Button
android:layout_below="@id/count"
android:layout_toRightOf="@id/reset"
android:text="@string/add" />
</RelativeLayout>
@chiuki
<RelativeLayout>
<TextView
android:id="@+id/count"
android:layout_centerInParent="true" />
<Button
android:id="@+id/reset"
android:layout_below="@id/count"
android:layout_centerHorizontal="true"
android:text="@string/reset" />
<Button
android:layout_below="@id/count"
android:layout_toLeftOf="@id/reset"
android:text="@string/subtract" />
<Button
android:layout_below="@id/count"
android:layout_toRightOf="@id/reset"
android:text="@string/add" />
</RelativeLayout>
@chiuki@chiuki
Device Preview
@chiuki@chiuki
Bigger text on tablets
Resource Folders
@chiuki@chiuki
textSize
<TextView
android:id="@+id/count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="128sp" />
res/layout/activity_main.xml
@chiuki@chiuki
res/values/dimens.xml
<TextView
android:id="@+id/count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="@dimen/counter_size" />
res/layout/activity_main.xml
<dimen name="counter_size" value="128sp" />
res/values/dimens.xml
@chiuki@chiuki
res/values-sw600dp/dimens.xml
<TextView
android:id="@+id/count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="@dimen/counter_size" />
res/layout/activity_main.xml
<dimen name="counter_size" value="128sp" />
<dimen name="counter_size" value="256sp" />
res/values/dimens.xml
res/values-sw600dp/dimens.xml
@chiuki@chiuki
Resource Folders
Type Variation
layout
values
drawable
menu
Language & Region: en, fr, fr-rCA, ja
Screen size: small, large, sw600dp, h400dp
Screen orientation: port, land
Screen density: ldpi, mdpi, hdpi, xhdpi, nodpi, tvdpi
Platform version: v4, v11, v14
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, ja
Screen size: small, large, sw600dp, h400dp
Screen orientation: port, land
Screen density: ldpi, mdpi, hdpi, xhdpi, nodpi, tvdpi
Platform version: v4, v11, v14
UI mode: car, desk, television, appliance
http://developer.android.com/guide/topics/resources/providing-resources.html
res/values-sw600dp/dimens.xml
@chiuki@chiuki
Resource Folders
Type Variation
layout
values
drawable
menu
Language & Region: en, fr, fr-rCA, ja
Screen size: small, large, sw600dp, h400dp
Screen orientation: port, land
Screen density: ldpi, mdpi, hdpi, xhdpi, nodpi, tvdpi
Platform version: v4, v11, v14
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, ja
Screen size: small, large, sw600dp, h400dp
Screen orientation: port, land
Screen density: ldpi, mdpi, hdpi, xhdpi, nodpi, tvdpi
Platform version: v4, v11, v14
UI mode: car, desk, television, appliance
http://developer.android.com/guide/topics/resources/providing-resources.html
res/drawable-hdpi/ic_launcher.png
@2x
@chiuki@chiuki
Resource Folders
Type Variation
layout
values
drawable
menu
Language & Region: en, fr, fr-rCA, ja
Screen size: small, large, sw600dp, h400dp
Screen orientation: port, land
Screen density: ldpi, mdpi, hdpi, xhdpi, nodpi, tvdpi
Platform version: v4, v11, v14
UI mode: car, desk, television, appliance
http://developer.android.com/guide/topics/resources/providing-resources.html
res/layout-ja/name.xml
Activity Lifecycle
@chiuki@chiuki
onCreate()
Activity Lifecycle
@chiuki@chiuki
onCreate()
Activity Lifecycle
@chiuki@chiuki
onCreate() viewDidLoad:
Activity Lifecycle
@chiuki@chiuki
onCreate() viewDidLoad:
onStart()
Activity Lifecycle
@chiuki@chiuki
onCreate() viewDidLoad:
onStart()
onResume()
Activity Lifecycle
@chiuki@chiuki
onCreate() viewDidLoad:
onStart()
onResume()
viewWillAppear:
viewDidAppear:
Activity Lifecycle
@chiuki@chiuki
onCreate() viewDidLoad:
onStart()
onResume()
viewWillAppear:
viewDidAppear:
onPause()
Activity Lifecycle
@chiuki@chiuki
onCreate() viewDidLoad:
onStart()
onResume()
viewWillAppear:
viewDidAppear:
onPause()
onStop()
Activity Lifecycle
@chiuki@chiuki
onCreate() viewDidLoad:
onStart()
onResume()
viewWillAppear:
viewDidAppear:
onPause()
onStop()
viewWillDisappear:
viewDidDisappear:
Activity Lifecycle
@chiuki@chiuki
onCreate() viewDidLoad:
onStart()
onResume()
viewWillAppear:
viewDidAppear:
onPause()
onStop()
viewWillDisappear:
viewDidDisappear:
onDestroy()
Activity Lifecycle
@chiuki@chiuki
onCreate() viewDidLoad:
onStart()
onResume()
viewWillAppear:
viewDidAppear:
onPause()
onStop()
viewWillDisappear:
viewDidDisappear:
onDestroy() viewDidUnload:
Activity Lifecycle
@chiuki@chiuki
onCreate() viewDidLoad:
onStart()
onResume()
viewWillAppear:
viewDidAppear:
onPause()
onStop()
viewWillDisappear:
viewDidDisappear:
onDestroy() viewDidUnload:
Activity Lifecycle
@chiuki@chiuki
Visibility
More Activities
@chiuki@chiuki
startActivity (explicit)
Intent intent = new Intent(this, NumberActivity.class);
intent.putExtra("count", count);
startActivity(intent);
@chiuki@chiuki
startActivity (explicit)
Intent intent = new Intent(this, NumberActivity.class);
intent.putExtra("count", count);
startActivity(intent);
@chiuki@chiuki
startActivity (explicit)
Intent intent = new Intent(this, NumberActivity.class);
intent.putExtra("count", count);
startActivity(intent);
@chiuki@chiuki
startActivity (implicit)
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://twitter.com/chiuki"));
startActivity(intent);
@chiuki@chiuki
startActivity (implicit)
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://twitter.com/chiuki"));
startActivity(intent);
@chiuki@chiuki
startActivity (implicit)
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://twitter.com/chiuki"));
startActivity(intent);
@chiuki@chiuki
startActivity (implicit)
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://twitter.com/chiuki"));
startActivity(intent);
@chiuki@chiuki
Register your Activity
<activity android:name=".YourActivity">
<intent-filter>
   <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
  <data android:scheme="http" android:host="twitter.com" />
  </intent-filter>
</activity>
AndroidManifest.xml
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://twitter.com/chiuki"));
startActivity(intent);
Info.plist
@chiuki@chiuki
IntentFilter: Action
<activity android:name=".YourActivity">
<intent-filter>
   <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
  <data android:scheme="http" android:host="twitter.com" />
  </intent-filter>
</activity>
AndroidManifest.xml
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://twitter.com/chiuki"));
startActivity(intent);
@chiuki@chiuki
IntentFilter: Data
<activity android:name=".YourActivity">
<intent-filter>
   <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
  <data android:scheme="http" android:host="twitter.com" />
  </intent-filter>
</activity>
AndroidManifest.xml
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://twitter.com/chiuki"));
startActivity(intent);
@chiuki@chiuki
IntentFilter: Category
<activity android:name=".YourActivity">
<intent-filter>
   <action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
  <data android:scheme="http" android:host="twitter.com" />
  </intent-filter>
</activity>
AndroidManifest.xml
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://twitter.com/chiuki"));
startActivity(intent);
@chiuki@chiuki
IntentFilter: Category
<activity android:name=".YourActivity">
<intent-filter>
   <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
  <data android:scheme="http" android:host="twitter.com" />
  </intent-filter>
</activity>
AndroidManifest.xml
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://twitter.com/chiuki"));
startActivity(intent);
@chiuki@chiuki
Intent Data
<activity android:name=".YourActivity">
<intent-filter>
   <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
  <data android:scheme="http" android:host="twitter.com" />
  </intent-filter>
</activity>
Uri uri = getIntent().getData();
AndroidManifest.xml
YourActivity.java
@chiuki@chiuki
startActivityForResult
private static final int REQUEST_CODE_CAMERA = 1;
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, REQUEST_CODE_CAMREA);
protected void onActivityResult(
int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE_CAMERA &&
resultCode == RESULT_OK) {
Bitmap bitmap = (Bitmap) data.getExtras().get("data");
}
}
@chiuki@chiuki
startActivityForResult
private static final int REQUEST_CODE_CAMERA = 1;
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, REQUEST_CODE_CAMERA);
protected void onActivityResult(
int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE_CAMERA &&
resultCode == RESULT_OK) {
Bitmap bitmap = (Bitmap) data.getExtras().get("data");
}
}
@chiuki@chiuki
Providing Result
Intent data = new Intent();
data.putExtra("data", bitmap);
setResult(RESULT_OK, data);
finish();
protected void onActivityResult(
int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE_CAMERA &&
resultCode == RESULT_OK) {
Bitmap bitmap = (Bitmap) data.getExtras().get("data");
}
}
@chiuki@chiuki
Intent Data
Intent data = new Intent();
data.putExtra("data", bitmap);
setResult(RESULT_OK, data);
finish();
protected void onActivityResult(
int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE_CAMERA &&
resultCode == RESULT_OK) {
Bitmap bitmap = (Bitmap) data.getExtras().get("data");
}
}
@chiuki@chiuki
Result Code
Intent data = new Intent();
data.putExtra("data", bitmap);
setResult(RESULT_OK, data);
finish();
protected void onActivityResult(
int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE_CAMERA &&
resultCode == RESULT_OK) {
Bitmap bitmap = (Bitmap) data.getExtras().get("data");
}
}
@chiuki@chiuki
Share intent
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_TEXT, message);
intent.setType("image/*");
Uri uri = Uri.fromFile(new File(path));
intent.putExtra(Intent.EXTRA_STREAM, uri);
@chiuki@chiuki
IntentFilter: Type
<activity android:name=".YourActivity">
<intent-filter>
   <action android:name="android.intent.action.ACTION_SEND" />
    <category android:name="android.intent.category.DEFAULT" />
  <data android:mimeType="image/*" />
  </intent-filter>
</activity>
AndroidManifest.xml
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("image/*");
@chiuki@chiuki
Intent Data
String subject = intent.getStringExtra(Intent.EXTRA_SUBJECT);
String message = intent.getStringExtra(Intent.EXTRA_TEXT);
Uri imageUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
YourActivity.java
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_TEXT, message);
intent.setType("image/*");
Uri uri = Uri.fromFile(new File(path));
intent.putExtra(Intent.EXTRA_STREAM, uri);
Beyond Activities
@chiuki@chiuki
Service BroadcastReceiver
ContentProvider Notification
@chiuki@chiuki
Service
Look ma, no UI!
@chiuki@chiuki
Service
Long-running
@chiuki@chiuki
BroadcastReceiver
Respond
@chiuki@chiuki
BroadcastReceiver
Respond
Battery low
Wifi connected
Incoming SMS
App installed
Screen off
@chiuki@chiuki
ContentProvider
Provide data to other apps
@chiuki@chiuki
ContentProvider
Provide data to other apps
Contacts
Images Music
Calendar
@chiuki@chiuki
ContentProvider
Internal data
(unless you need SQLite interface)
@chiuki@chiuki
Notification
Notify
@chiuki@chiuki
Notify
@chiuki@chiuki
Notification
Communicate with background Service
@chiuki@chiuki
Background Service
Case study
@chiuki
Email Outbox
@chiuki
@chiuki@chiuki
Notification
@chiuki@chiuki
AlarmService
@chiuki@chiuki
Connectivity change
Summary
@chiuki@chiuki
Summary
Hello World
Layouts
Resource Folders
Activity Lifecycle
Intents & Components
Case Study
@chiuki@chiuki
Thank you!
http://eepurl.com/lR5uD
http://blog.sqisland.com
http://twitter.com/chiuki

More Related Content

ODP
I have nothing to say, Ignite Where 2012
PPTX
Teori karies
PDF
Bust the Android Fragmentation Myth
PPTX
Fernando F. Gallego - Efficient Android Resources 101
PDF
Android Workshop - Session 2
PDF
Ch4 creating user interfaces
PPTX
Android Development Made Easy - With Sample Project
PDF
One APK to rule them all
I have nothing to say, Ignite Where 2012
Teori karies
Bust the Android Fragmentation Myth
Fernando F. Gallego - Efficient Android Resources 101
Android Workshop - Session 2
Ch4 creating user interfaces
Android Development Made Easy - With Sample Project
One APK to rule them all

Similar to Intro to Android for iOS developers (20)

PPTX
Consistent UI Across Android Devices
PPTX
Android Development for Beginners with Sample Project - Day 1
PPTX
Lecture 4 display_principles
PPTX
08ui.pptx
PDF
Android training day 3
PPTX
Designing for Android - Anjan Shrestha
PDF
Multi Screen Hell
PPTX
Mtc spring 2014 best practices to develop for different android device classi...
PPTX
Designing For Android
PPTX
Lecture 4 display_principles
PDF
Droidcon 2013 multidevice nightmare
PPTX
Android for Beginners
PDF
Android2.x/3.x/4.x向けアプリ開発で気付いたこと
PPT
Lec005 android start_program
PDF
Best Practices for Android UI by RapidValue Solutions
PDF
Xamarin Evolve 2014 - Designing Android UIs for the Ever Changing Device Land...
PPTX
Designing Android apps for multiple screens
PPT
Android
PPTX
03 layouts & ui design - Android
PDF
Top Tips for Android UIs - Getting the Magic on Tablets
Consistent UI Across Android Devices
Android Development for Beginners with Sample Project - Day 1
Lecture 4 display_principles
08ui.pptx
Android training day 3
Designing for Android - Anjan Shrestha
Multi Screen Hell
Mtc spring 2014 best practices to develop for different android device classi...
Designing For Android
Lecture 4 display_principles
Droidcon 2013 multidevice nightmare
Android for Beginners
Android2.x/3.x/4.x向けアプリ開発で気付いたこと
Lec005 android start_program
Best Practices for Android UI by RapidValue Solutions
Xamarin Evolve 2014 - Designing Android UIs for the Ever Changing Device Land...
Designing Android apps for multiple screens
Android
03 layouts & ui design - Android
Top Tips for Android UIs - Getting the Magic on Tablets
Ad

More from Chiu-Ki Chan (10)

PDF
Yes, you can draw with your engineering brain
PDF
How to be an Android Expert: Women Who Code Connect
PDF
how-to-be-an-android-expert-wwcode
PDF
How to be an Android Expert: Droidcon Berlin
PDF
How to be an Android Expert: Droidcon Boston
PDF
How to Write a Conference Proposal
PDF
How to be an Android Expert: Android Summit
KEY
Hands-on Icon creation
KEY
Develop your voice
KEY
How to win hackathons, Ignite Google I/O 2012
Yes, you can draw with your engineering brain
How to be an Android Expert: Women Who Code Connect
how-to-be-an-android-expert-wwcode
How to be an Android Expert: Droidcon Berlin
How to be an Android Expert: Droidcon Boston
How to Write a Conference Proposal
How to be an Android Expert: Android Summit
Hands-on Icon creation
Develop your voice
How to win hackathons, Ignite Google I/O 2012
Ad

Recently uploaded (20)

PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
A Presentation on Artificial Intelligence
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Empathic Computing: Creating Shared Understanding
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPT
Teaching material agriculture food technology
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
Big Data Technologies - Introduction.pptx
PPTX
Cloud computing and distributed systems.
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Electronic commerce courselecture one. Pdf
PPTX
Spectroscopy.pptx food analysis technology
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
A Presentation on Artificial Intelligence
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Diabetes mellitus diagnosis method based random forest with bat algorithm
Chapter 3 Spatial Domain Image Processing.pdf
Empathic Computing: Creating Shared Understanding
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Teaching material agriculture food technology
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Dropbox Q2 2025 Financial Results & Investor Presentation
Unlocking AI with Model Context Protocol (MCP)
Big Data Technologies - Introduction.pptx
Cloud computing and distributed systems.
NewMind AI Weekly Chronicles - August'25-Week II
Reach Out and Touch Someone: Haptics and Empathic Computing
Review of recent advances in non-invasive hemoglobin estimation
Per capita expenditure prediction using model stacking based on satellite ima...
MYSQL Presentation for SQL database connectivity
Electronic commerce courselecture one. Pdf
Spectroscopy.pptx food analysis technology

Intro to Android for iOS developers