SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Downloaden Sie, um offline zu lesen
Android Overview




   Dongsu Han
                   1
Outline
•   Java network programming overview
•   Android Overview
•   Android Emulator Overview
•   Project Overview
•   Getting Started




                                        2
Java Network Programming
• Java.net.* programming model
  – Blocking model, you wait until work is done, maybe
    forever
  – One thread required per connection
  – Socket exposes input and output stream
• Java.nio.* programming model
  – Introduced in Java 1.4, non-blocking IO
  – New Interface: SocketChannel (in java.nio.channels)
  – Reading/writing via Buffer objects rather than
    input/output streams
  – Select() implemented
                                                          3
Java.net.* Socket API
• Part of the java.net package
  – import java.net.*;
• Provides two classes of sockets for TCP
  – Socket : client side of socket
  – ServerSocket : server side of socket
• Provides one socket type for UDP
  – DatagramSocket


                                            4
Java.net.Socket
• Making a connection
  Socket s = new Socket(“hostname”, port);
• The constructor not only creates a socket, but
  makes a TCP connection.
• Socket exposes input and output stream.
  s.getOutputStream()
  s.getInputStream()
• Most of the time you'll chain the input/output
  stream to some other input/output stream or
  reader object to more easily handle the data.
                                                   5
Java.net.Socket
• Create a print stream for writing
   – OutputStream rawOut =
     socket.getOutputStream();
   – PrintStream pout = new PrintStream(rawOut);
• Create a data output stream for writing
   – BufferedOutputStream buffOut = new
     BufferedOutputStream(rawOut);
   – out =new DataOutputStream(buffOut);
• Create a data input stream for reading
  DataInputStream din =
  new DataInputStream(socket.getInputStream());
                                                   6
Java.net.ServerSocket
• Server Side socket
• To support multiple clients servers have
  at least one thread per client
  ServerSocket svr = new ServerSocket(port);
  while (Socket s = svr.accept())
 {
     new EchoThread(s).start();
 }

                                               7
Java.net and Thread
class EchoThread extends Thread {

    EchoThread(Socket s) { ... }

    public void run() {
    // waits for data and reads it in until connection dies
    // readLine() blocks until the server receives a new line from client

        String s;
        while ((s = in.readLine()) != null) {
            out.println(s);
        }
    }
}
                                                                            8
Reference for Java Network
           Programming

• http://java.sun.com/docs/books/tutorial/net
  working/sockets/index.html




                                                9
Android
• Software platform on mobile device by Open
  Handset Alliance (Google)
• Developing language is Java
• Linux kernel (Open Source)
• Provides a development kit (SDK)
• Emulator support with some limitation



                                               10
Developing Android Application
• There are four building blocks to an Android
  application:
  – Activity
  – Service
  – Broadcast Intent Receiver
  – Content Provider


• http://code.google.com/android/intro/anatomy.html

                                                  11
Developing Android Application
• Activity
   – Controls a single screen
   – Usually starts up with an app, multiple Activity(screen) is
     associated to an app
   – Intent is used to move from screen to screen
• Service
   – A Service is code that is long-lived and runs without a UI
   – E.g. Network I/O, playback of media files
• Not using these components correctly can result in the system killing
  the application's process while it is doing important work.
                                                                     12
Project 1
• Description
  – Develop a file sharing application where updates get
    synchronized when users come across within
    communication range


• Checkpoint
  – Implement service discovery
  – Establish a TCP connection between every pair of
    nodes in range
  – Due Feb 5. 2 weeks from now.

                                                           13
Getting Started
• Setting up the environment (Installation)
  – Section 3.1 of the project document
  – Use the pre-installed binaries on AFS
  – Copy the binaries from AFS
  – Install yourself
• Need eclipse, Java SDK 1.5/1.6, android SDK,
  eclipse plug-in


                                                 14
Getting Started
• Starting the project on Eclipse
   – Download project file
   – Open the project in Eclipse (read the documentation)
• Running the local server
   – Local server controls the connection between Android
     emulators
   – Implemented in Ruby binds port 10001 ~ 10010
   – Need eventmachine Ruby lib
   – setenv RUBYLIB
     /afs/cs.cmu.edu/project/cmcl-srini-4/15-
     446/android/eventmachine-0.12.2/lib

                                                            15
Emulator




           16
Emulator
• Running the emulator
  – Stand-alone (./emulator)
  – Eclipse Plug-in (Just ‘Run’ it as Android application)
• Binds to port 5554~5580
  – Don’t run on shared machines
• adb (Android Debugging Bridge)
  – Using adb, we can connect to android’s shell
  – Logcat (demo)

                                                        17
Running multiple emulators
• Manual mode will let you do this
  – Menu: Run  Run Configurations
  – Go to Android Applications on the left tab and
    select FileSharerActivityProject
  – Click on Target tab and select “maunal” mode
  – When you run you can specify to launch a new
    emulator or use existing ones to run the app
• To use adb you have to specify the emulator
  device name if there are multiple emulators
• #adb –s emulator-5554 shell
                                                     18
Configurations
• XML file defines a connectivity
<?xml version="1.0" encoding="UTF-8" ?>
<connectivity time="2" nodes="2">
   <connect node1="0" node2="1" at="1" />
</connectivity>




                                            19
Project API
• Broadcast Interface
  – BroadcastReceiveCallBack
  – CS446Bcast
• Socket API (blocking IO)
  – CS446ServerSocket
  – CS446Socket
• Util
  – getMyID() returns the ID of the emulator

                                               20
Broadcast Interface
• BroadcastReceiveCallBack
  – BcastMsgReceived(byte []msg, int srcID) gets
    called when a broadcast message is received from
    srcID. Msg is the byte array of the content.
• CS446Bcast
  – open() : returns CS446Bcast
  – send(byte [] msg): sends a broadcast message



                                                   21
Socket
• CS446ServerSocket
  – There can be only one server socket. ServerSocket
    always binds to port 0.
  – open(): returns a CS446ServerSocket
  – accept(): Listens for a incoming connection and
    returns a CS446Socket when a connection is
    established
  – close(): closes the socket
  – isClosed(): returns boolean

                                                    22
Socket
• CS446Socket
  – CS446Socket(int peerID): opens a socket and makes a
    connection to peerID, always use local port 1 remote
    port 0 when making a active connection
  – void close()
  – int getLocalPort()
  – int getPort()
  – int getPeerID()
  – int getLocalID()
  – OutputStream getOutputStream()
  – InputStream getInputStream()
                                                           23
2nd part of project 1
• You will be given a workload of users updating
  file.
• You will need to keep a version vector and
  synchronize the content.
• Details will be posted soon




                                               24

Weitere ähnliche Inhalte

Was ist angesagt?

2 Linux Container and Docker
2 Linux Container and Docker2 Linux Container and Docker
2 Linux Container and DockerFabio Fumarola
 
Docker Networking - Current Status and goals of Experimental Networking
Docker Networking - Current Status and goals of Experimental NetworkingDocker Networking - Current Status and goals of Experimental Networking
Docker Networking - Current Status and goals of Experimental NetworkingSreenivas Makam
 
Open stackaustinmeetupsept21
Open stackaustinmeetupsept21Open stackaustinmeetupsept21
Open stackaustinmeetupsept21Brent Doncaster
 
Go 1.8 'new' networking features
Go 1.8 'new' networking featuresGo 1.8 'new' networking features
Go 1.8 'new' networking featuresstrikr .
 
.NET Core, ASP.NET Core Course, Session 4
.NET Core, ASP.NET Core Course, Session 4.NET Core, ASP.NET Core Course, Session 4
.NET Core, ASP.NET Core Course, Session 4aminmesbahi
 
Introduction to Docker
Introduction  to DockerIntroduction  to Docker
Introduction to DockerJian Wu
 
Virtual Machines and Docker
Virtual Machines and DockerVirtual Machines and Docker
Virtual Machines and DockerDanish Khakwani
 
LXC, Docker, and the future of software delivery | LinuxCon 2013
LXC, Docker, and the future of software delivery | LinuxCon 2013LXC, Docker, and the future of software delivery | LinuxCon 2013
LXC, Docker, and the future of software delivery | LinuxCon 2013dotCloud
 
DSD-INT 2015- Open source pre and postprocessing workshop- Bert Jagers
DSD-INT 2015- Open source pre and postprocessing workshop- Bert JagersDSD-INT 2015- Open source pre and postprocessing workshop- Bert Jagers
DSD-INT 2015- Open source pre and postprocessing workshop- Bert JagersDeltares
 
Docker Networking in OpenStack: What you need to know now
Docker Networking in OpenStack: What you need to know nowDocker Networking in OpenStack: What you need to know now
Docker Networking in OpenStack: What you need to know nowPLUMgrid
 
Getting Started Hacking OpenNebula - Fosdem-2013
Getting Started Hacking OpenNebula - Fosdem-2013Getting Started Hacking OpenNebula - Fosdem-2013
Getting Started Hacking OpenNebula - Fosdem-2013OpenNebula Project
 
OpenStack Networking
OpenStack NetworkingOpenStack Networking
OpenStack NetworkingIlya Shakhat
 
OpenStack API's and WSGI
OpenStack API's and WSGIOpenStack API's and WSGI
OpenStack API's and WSGIMike Pittaro
 
Docker introduction for Carbon IT
Docker introduction for Carbon ITDocker introduction for Carbon IT
Docker introduction for Carbon ITyannick grenzinger
 

Was ist angesagt? (20)

2 Linux Container and Docker
2 Linux Container and Docker2 Linux Container and Docker
2 Linux Container and Docker
 
Distributed Elixir
Distributed ElixirDistributed Elixir
Distributed Elixir
 
Docker Networking - Current Status and goals of Experimental Networking
Docker Networking - Current Status and goals of Experimental NetworkingDocker Networking - Current Status and goals of Experimental Networking
Docker Networking - Current Status and goals of Experimental Networking
 
Learning Docker with Thomas
Learning Docker with ThomasLearning Docker with Thomas
Learning Docker with Thomas
 
Open stackaustinmeetupsept21
Open stackaustinmeetupsept21Open stackaustinmeetupsept21
Open stackaustinmeetupsept21
 
Go 1.8 'new' networking features
Go 1.8 'new' networking featuresGo 1.8 'new' networking features
Go 1.8 'new' networking features
 
.NET Core, ASP.NET Core Course, Session 4
.NET Core, ASP.NET Core Course, Session 4.NET Core, ASP.NET Core Course, Session 4
.NET Core, ASP.NET Core Course, Session 4
 
Testing Docker Security Linuxlab 2017
Testing Docker Security Linuxlab 2017Testing Docker Security Linuxlab 2017
Testing Docker Security Linuxlab 2017
 
Snaps on open suse
Snaps on open suseSnaps on open suse
Snaps on open suse
 
Introduction to Docker
Introduction  to DockerIntroduction  to Docker
Introduction to Docker
 
Virtual Machines and Docker
Virtual Machines and DockerVirtual Machines and Docker
Virtual Machines and Docker
 
LXC, Docker, and the future of software delivery | LinuxCon 2013
LXC, Docker, and the future of software delivery | LinuxCon 2013LXC, Docker, and the future of software delivery | LinuxCon 2013
LXC, Docker, and the future of software delivery | LinuxCon 2013
 
DSD-INT 2015- Open source pre and postprocessing workshop- Bert Jagers
DSD-INT 2015- Open source pre and postprocessing workshop- Bert JagersDSD-INT 2015- Open source pre and postprocessing workshop- Bert Jagers
DSD-INT 2015- Open source pre and postprocessing workshop- Bert Jagers
 
Qt Application Programming with C++ - Part 2
Qt Application Programming with C++ - Part 2Qt Application Programming with C++ - Part 2
Qt Application Programming with C++ - Part 2
 
Docker Networking in OpenStack: What you need to know now
Docker Networking in OpenStack: What you need to know nowDocker Networking in OpenStack: What you need to know now
Docker Networking in OpenStack: What you need to know now
 
Getting Started Hacking OpenNebula - Fosdem-2013
Getting Started Hacking OpenNebula - Fosdem-2013Getting Started Hacking OpenNebula - Fosdem-2013
Getting Started Hacking OpenNebula - Fosdem-2013
 
Docker basics
Docker basicsDocker basics
Docker basics
 
OpenStack Networking
OpenStack NetworkingOpenStack Networking
OpenStack Networking
 
OpenStack API's and WSGI
OpenStack API's and WSGIOpenStack API's and WSGI
OpenStack API's and WSGI
 
Docker introduction for Carbon IT
Docker introduction for Carbon ITDocker introduction for Carbon IT
Docker introduction for Carbon IT
 

Ähnlich wie Android Overview and Getting Started

Tornado Web Server Internals
Tornado Web Server InternalsTornado Web Server Internals
Tornado Web Server InternalsPraveen Gollakota
 
End-to-end IoT solutions with Java and Eclipse IoT
End-to-end IoT solutions with Java and Eclipse IoTEnd-to-end IoT solutions with Java and Eclipse IoT
End-to-end IoT solutions with Java and Eclipse IoTBenjamin Cabé
 
Building the Internet of Things with Thingsquare and Contiki - day 1, part 3
Building the Internet of Things with Thingsquare and Contiki - day 1, part 3Building the Internet of Things with Thingsquare and Contiki - day 1, part 3
Building the Internet of Things with Thingsquare and Contiki - day 1, part 3Adam Dunkels
 
FITC - Node.js 101
FITC - Node.js 101FITC - Node.js 101
FITC - Node.js 101Rami Sayar
 
5_6278455688045789623.pptx
5_6278455688045789623.pptx5_6278455688045789623.pptx
5_6278455688045789623.pptxEliasPetros
 
Learn Electron for Web Developers
Learn Electron for Web DevelopersLearn Electron for Web Developers
Learn Electron for Web DevelopersKyle Cearley
 
Distributed Data Flow for the Web of Things: Distributed Node-RED
Distributed Data Flow for the Web of Things: Distributed Node-REDDistributed Data Flow for the Web of Things: Distributed Node-RED
Distributed Data Flow for the Web of Things: Distributed Node-REDMichael Blackstock
 
j-chap1-Basics.ppt
j-chap1-Basics.pptj-chap1-Basics.ppt
j-chap1-Basics.pptSmitaBorkar9
 
SOLID Programming with Portable Class Libraries
SOLID Programming with Portable Class LibrariesSOLID Programming with Portable Class Libraries
SOLID Programming with Portable Class LibrariesVagif Abilov
 
IoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivityIoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivitySamsung Open Source Group
 
IoT: From Arduino MicroControllers to Tizen Products Using IoTivity - Philipp...
IoT: From Arduino MicroControllers to Tizen Products Using IoTivity - Philipp...IoT: From Arduino MicroControllers to Tizen Products Using IoTivity - Philipp...
IoT: From Arduino MicroControllers to Tizen Products Using IoTivity - Philipp...WithTheBest
 
A Science Project: Swift Serial Chat
A Science Project: Swift Serial ChatA Science Project: Swift Serial Chat
A Science Project: Swift Serial Chatyeokm1
 
Socket Programming - nitish nagar
Socket Programming - nitish nagarSocket Programming - nitish nagar
Socket Programming - nitish nagarNitish Nagar
 
introduction to node.js
introduction to node.jsintroduction to node.js
introduction to node.jsorkaplan
 

Ähnlich wie Android Overview and Getting Started (20)

Tornado Web Server Internals
Tornado Web Server InternalsTornado Web Server Internals
Tornado Web Server Internals
 
Multi user chat system using java
Multi user chat system using javaMulti user chat system using java
Multi user chat system using java
 
Java adv
Java advJava adv
Java adv
 
End-to-end IoT solutions with Java and Eclipse IoT
End-to-end IoT solutions with Java and Eclipse IoTEnd-to-end IoT solutions with Java and Eclipse IoT
End-to-end IoT solutions with Java and Eclipse IoT
 
Building the Internet of Things with Thingsquare and Contiki - day 1, part 3
Building the Internet of Things with Thingsquare and Contiki - day 1, part 3Building the Internet of Things with Thingsquare and Contiki - day 1, part 3
Building the Internet of Things with Thingsquare and Contiki - day 1, part 3
 
FITC - Node.js 101
FITC - Node.js 101FITC - Node.js 101
FITC - Node.js 101
 
5_6278455688045789623.pptx
5_6278455688045789623.pptx5_6278455688045789623.pptx
5_6278455688045789623.pptx
 
Learn Electron for Web Developers
Learn Electron for Web DevelopersLearn Electron for Web Developers
Learn Electron for Web Developers
 
Distributed Data Flow for the Web of Things: Distributed Node-RED
Distributed Data Flow for the Web of Things: Distributed Node-REDDistributed Data Flow for the Web of Things: Distributed Node-RED
Distributed Data Flow for the Web of Things: Distributed Node-RED
 
j-chap1-Basics.ppt
j-chap1-Basics.pptj-chap1-Basics.ppt
j-chap1-Basics.ppt
 
Chap 1 Network Theory & Java Overview
Chap 1   Network Theory & Java OverviewChap 1   Network Theory & Java Overview
Chap 1 Network Theory & Java Overview
 
SOLID Programming with Portable Class Libraries
SOLID Programming with Portable Class LibrariesSOLID Programming with Portable Class Libraries
SOLID Programming with Portable Class Libraries
 
IoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivityIoT: From Arduino Microcontrollers to Tizen Products using IoTivity
IoT: From Arduino Microcontrollers to Tizen Products using IoTivity
 
IoT: From Arduino MicroControllers to Tizen Products Using IoTivity - Philipp...
IoT: From Arduino MicroControllers to Tizen Products Using IoTivity - Philipp...IoT: From Arduino MicroControllers to Tizen Products Using IoTivity - Philipp...
IoT: From Arduino MicroControllers to Tizen Products Using IoTivity - Philipp...
 
Lecture10
Lecture10Lecture10
Lecture10
 
A Science Project: Swift Serial Chat
A Science Project: Swift Serial ChatA Science Project: Swift Serial Chat
A Science Project: Swift Serial Chat
 
javanetworking
javanetworkingjavanetworking
javanetworking
 
Socket Programming - nitish nagar
Socket Programming - nitish nagarSocket Programming - nitish nagar
Socket Programming - nitish nagar
 
introduction to node.js
introduction to node.jsintroduction to node.js
introduction to node.js
 
A.java
A.javaA.java
A.java
 

Kürzlich hochgeladen

WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 

Kürzlich hochgeladen (20)

WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 

Android Overview and Getting Started

  • 1. Android Overview Dongsu Han 1
  • 2. Outline • Java network programming overview • Android Overview • Android Emulator Overview • Project Overview • Getting Started 2
  • 3. Java Network Programming • Java.net.* programming model – Blocking model, you wait until work is done, maybe forever – One thread required per connection – Socket exposes input and output stream • Java.nio.* programming model – Introduced in Java 1.4, non-blocking IO – New Interface: SocketChannel (in java.nio.channels) – Reading/writing via Buffer objects rather than input/output streams – Select() implemented 3
  • 4. Java.net.* Socket API • Part of the java.net package – import java.net.*; • Provides two classes of sockets for TCP – Socket : client side of socket – ServerSocket : server side of socket • Provides one socket type for UDP – DatagramSocket 4
  • 5. Java.net.Socket • Making a connection Socket s = new Socket(“hostname”, port); • The constructor not only creates a socket, but makes a TCP connection. • Socket exposes input and output stream. s.getOutputStream() s.getInputStream() • Most of the time you'll chain the input/output stream to some other input/output stream or reader object to more easily handle the data. 5
  • 6. Java.net.Socket • Create a print stream for writing – OutputStream rawOut = socket.getOutputStream(); – PrintStream pout = new PrintStream(rawOut); • Create a data output stream for writing – BufferedOutputStream buffOut = new BufferedOutputStream(rawOut); – out =new DataOutputStream(buffOut); • Create a data input stream for reading DataInputStream din = new DataInputStream(socket.getInputStream()); 6
  • 7. Java.net.ServerSocket • Server Side socket • To support multiple clients servers have at least one thread per client ServerSocket svr = new ServerSocket(port); while (Socket s = svr.accept()) { new EchoThread(s).start(); } 7
  • 8. Java.net and Thread class EchoThread extends Thread { EchoThread(Socket s) { ... } public void run() { // waits for data and reads it in until connection dies // readLine() blocks until the server receives a new line from client String s; while ((s = in.readLine()) != null) { out.println(s); } } } 8
  • 9. Reference for Java Network Programming • http://java.sun.com/docs/books/tutorial/net working/sockets/index.html 9
  • 10. Android • Software platform on mobile device by Open Handset Alliance (Google) • Developing language is Java • Linux kernel (Open Source) • Provides a development kit (SDK) • Emulator support with some limitation 10
  • 11. Developing Android Application • There are four building blocks to an Android application: – Activity – Service – Broadcast Intent Receiver – Content Provider • http://code.google.com/android/intro/anatomy.html 11
  • 12. Developing Android Application • Activity – Controls a single screen – Usually starts up with an app, multiple Activity(screen) is associated to an app – Intent is used to move from screen to screen • Service – A Service is code that is long-lived and runs without a UI – E.g. Network I/O, playback of media files • Not using these components correctly can result in the system killing the application's process while it is doing important work. 12
  • 13. Project 1 • Description – Develop a file sharing application where updates get synchronized when users come across within communication range • Checkpoint – Implement service discovery – Establish a TCP connection between every pair of nodes in range – Due Feb 5. 2 weeks from now. 13
  • 14. Getting Started • Setting up the environment (Installation) – Section 3.1 of the project document – Use the pre-installed binaries on AFS – Copy the binaries from AFS – Install yourself • Need eclipse, Java SDK 1.5/1.6, android SDK, eclipse plug-in 14
  • 15. Getting Started • Starting the project on Eclipse – Download project file – Open the project in Eclipse (read the documentation) • Running the local server – Local server controls the connection between Android emulators – Implemented in Ruby binds port 10001 ~ 10010 – Need eventmachine Ruby lib – setenv RUBYLIB /afs/cs.cmu.edu/project/cmcl-srini-4/15- 446/android/eventmachine-0.12.2/lib 15
  • 16. Emulator 16
  • 17. Emulator • Running the emulator – Stand-alone (./emulator) – Eclipse Plug-in (Just ‘Run’ it as Android application) • Binds to port 5554~5580 – Don’t run on shared machines • adb (Android Debugging Bridge) – Using adb, we can connect to android’s shell – Logcat (demo) 17
  • 18. Running multiple emulators • Manual mode will let you do this – Menu: Run  Run Configurations – Go to Android Applications on the left tab and select FileSharerActivityProject – Click on Target tab and select “maunal” mode – When you run you can specify to launch a new emulator or use existing ones to run the app • To use adb you have to specify the emulator device name if there are multiple emulators • #adb –s emulator-5554 shell 18
  • 19. Configurations • XML file defines a connectivity <?xml version="1.0" encoding="UTF-8" ?> <connectivity time="2" nodes="2"> <connect node1="0" node2="1" at="1" /> </connectivity> 19
  • 20. Project API • Broadcast Interface – BroadcastReceiveCallBack – CS446Bcast • Socket API (blocking IO) – CS446ServerSocket – CS446Socket • Util – getMyID() returns the ID of the emulator 20
  • 21. Broadcast Interface • BroadcastReceiveCallBack – BcastMsgReceived(byte []msg, int srcID) gets called when a broadcast message is received from srcID. Msg is the byte array of the content. • CS446Bcast – open() : returns CS446Bcast – send(byte [] msg): sends a broadcast message 21
  • 22. Socket • CS446ServerSocket – There can be only one server socket. ServerSocket always binds to port 0. – open(): returns a CS446ServerSocket – accept(): Listens for a incoming connection and returns a CS446Socket when a connection is established – close(): closes the socket – isClosed(): returns boolean 22
  • 23. Socket • CS446Socket – CS446Socket(int peerID): opens a socket and makes a connection to peerID, always use local port 1 remote port 0 when making a active connection – void close() – int getLocalPort() – int getPort() – int getPeerID() – int getLocalID() – OutputStream getOutputStream() – InputStream getInputStream() 23
  • 24. 2nd part of project 1 • You will be given a workload of users updating file. • You will need to keep a version vector and synchronize the content. • Details will be posted soon 24