CHAP 13. 네트워크.

Slides:



Advertisements
Similar presentations
Android Application. 최신버전 안드로이드 SDK 설치 1. SDK 설치 접속.
Advertisements

을지대학교 무선 네트워크 사용 방법 2010 년 06 월 01 일. 을지대학교 무선 네트워크 사용 방법 1. PC 무선랜 카드 활성화 및 체크 1 단계 : 시작 -> 설정 -> 네트워크 설정 2 단계 : 무선 네트워크 설정 선택 -> 마우스 버튼 오른쪽 클릭 -> 사용.
임직원 APP 설치 가이드 경영전략처 정보기획 TF 팀. 임직원 App- 운영체제 구분  안드로이드 갤럭시, 갤럭시노트, 갤럭시 S4 [ 삼성전자 ] 옵티머스 [LG 전자 ] 베가 [ 팬텍 모토로이 [ 모토롤라 ]  ios 아이폰 [ 애플.
Korea Virtual Payment 모바일 안전결제 (ISP) 서비스 모델 - iPhone 한국버추얼페이먼트㈜ 기술연구소
1 도시가스  추진계획  보고 군산대학교 통학버스 예약 시스템 APP 설치 매뉴얼 군산대학교 통학버스 예약 시스템
Android Application 데이터베이 스. 데이터베이스 활용하 기  안드로이드에 쓰이는 DBMS 의 이름은 SQLite.  SQLite 는 경량의 임베디드 데이터베이스 엔젠이며, 아이폰, 파이어폭스 등 여 러 곳에서 이미 많이 채택된 검증된 엔진이다. 
Unlocking Android 안드로이드 패키지 (1/2) 2 Unlocking Android 안드로이드 패키지 (2/2) 3.
CHAP 3. 첫번째 애플리케이션 예제 #1: text 문자를 출력 예제 #2: UI를 XML로 표현 – main.xml
6 메 뉴.
11장. 프로토콜 핸들러 AI &HC I LAB 김 성 현.
어서와 Java는 처음이지! 제20장 실전프로젝트 #2.
CHAP 22. 블루투스.
CHAP 18. 멀티미디어.
CHAP 10. 액티비티와 인텐트.
CHAP 10. 액티비티와 인텐트.
Android Programming 고급위젯
10. 예외 처리.
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
Android Application 애플리케이션 위젯.
CHAP 19. 구글맵.
Contents 학습목표 이벤트를 처리하는 여러 가지 형식과 각 형식의 장단점에 대해 상세하게 연구하고 기본적인 이벤트에 대한 실습을 한다. 사용자의 입력을 자유자재로 처리하기 위해서 반드시 습득해야 하는 중요한 기술 실습. 학습내용 이벤트 핸들러 여러 가지 이벤트.
CHAP 7. 메뉴와 대화상자.
Contents 학습목표 Canvas와 Paint 객체를 통해 화면에 원하는 도형을 그리고 속성을 변경하는 기본적인 방법에 대해 소개한다. 토스트로 메시지를 출력하는 방법과 스피커를 통해 소리를 출력하는 방법에 대해서도 알아본다. 학습내용 캔버스 그리기 객체 쉐이더 그외.
Power Java 제3장 이클립스 사용하기.
Java Seminar 6.
Ch.07-5 xml-rpc 사용하기 김상엽.
CHAP 4. 이벤트 처리.
CHAP 6. 이벤트 처리.
모바일 서버 만들기 13장 Do it! Node.js 프로그래밍 이지스퍼블리싱 제공 강의 교안 2017/03
PHP입문 Izayoi 김조흔.
CHAP 24. nfc와 앱위젯.
CHAP 11. 액티비티와 인텐트.
CHAP 7. 메뉴와 대화상자.
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
Java 기초 (Java JDK 설치 및 환경설정)
제 2 장 WML 시뮬레이터 및 무선인터넷 서버 설치
CHAP 8. 그래픽.
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
모바일 자바 프로그래밍 JDBC / WAP Ps lab 오민경.
WinCE Device Driver 실습 #3
WinCE Device Driver 실습 #2
CHAP 6. 이벤트 처리.
KHS JDBC Programming 4 KHS
CHAP 14. 데이터베이스와 환경 설정.
제 01 장 인터넷 프로그래밍 개요 학기 인터넷비즈니스과 강 환수 교수.
CHAP 12. 리소스와 보안.
2018년 11월 05일 박성진 Web & Internet [08] 레이아웃 P1 2018년 11월 05일 박성진
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
CHAP 3. 첫번째 애플리케이션.
CHAP 5. 레이아웃.
CHAP 13. 서비스와 방송 수신자.
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
ASP.NET AJAX / AJAX Control Toolkit 응용 2008 컴퓨터공학실험( I )
웹디자인
컴퓨터공학실습(I) 3주 인공지능연구실.
CHAP 21. 전화, SMS, 주소록.
웹 어플리케이션 보안 2016년 2학기 11. Enhancing Security.
안드로이드 앱 개발과정 Step1. 기초과정 강사 : 정 훈 희.
Introduction to JSP & Servlet
3장 JSP프로그래밍의 개요 이장에서 배울 내용 : JSP페이지의 기본적인 개요설명과 JSP페이지의 처리과정 그리고 웹 어플리케이션의 구조에 대해서 학습한다.
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
JSP Programming with a Workbook
세션에 대해 알아보고 HttpSession 에 대해 이해한다 세션 관리에 사용되는 요소들을 살펴본다
슬라이드 쇼의 설정 슬라이드 쇼의 실행 파일과 폴더의 관리 글꼴을 포함해서 저장 웹 페이지로 게시 압축 파일
CHAP 11. 리소스와 보안.
Android -Data Base 윤수진 GyeongSang Univ. IT 1.
무선랜 사용자 설명서 (Windows Vista 사용자).
CHAP 15. 데이터 스토리지.
CHAP 5. 메뉴와 대화상자.
JAVA 프로그래밍 16장 JNLP.
Presentation transcript:

CHAP 13. 네트워크

안드로이드에서의 네트워크

네트워킹 상태 조회 ConnectivityManager 클래스는 네트워크 연결 상태를 감시하고 만약 네트워크 연결 상태가 변경되면 다른 애플리케이션에게 방송한다.

예제: 현재 네트워크 상태 출력 버튼을 누르면 현재 네트워크 상태를 출력한다.

사용자 인터페이스 작성 에디트 텍스트와 버튼으로 이루어진 사용자 인터페이스를 작성한다. 자세한 내용은 소스를 참고한다.

코드 작성 package kr.co.company.networktest1; // 소스만 입력하고 Alt+Enter를 눌러서 import 문장을 자동으로 생성한다. public class MainActivity extends AppCompatActivity { EditText display; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button get = (Button) findViewById(R.id.get); display = (EditText) findViewById(R.id.display);

코드 작성 get.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { try { ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNet = manager.getActiveNetworkInfo(); if (activeNet != null) { if (activeNet.getType() == ConnectivityManager.TYPE_WIFI) display.setText(activeNet.toString()); } else if (activeNet.getType() == ConnectivityManager.TYPE_MOBILE) { display.setText(activeNet.toString()); } } } catch (Exception e) { } } }); }

메니페스트 파일 수정 ... <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

실행 결과

웹에서 파일 다운로드 HTTP 프로토콜을 이용하여서 네트워크에서 파일을 다운로드할 때 는 HttpURLConnection 사용 메인 스레드에서 직접 파일을 다운로드하면 NetworkOnMainThreadException 예외가 발생

예제: 웹서버에서 웹페이지 다운로드하여 표시

사용자 인터페이스 작성 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <EditText android:id="@+id/url" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" > <requestFocus /> </EditText> <Button android:id="@+id/download" android:text="Button" /> <TextView android:id="@+id/text" android:layout_height="match_parent" android:text="TextView" /> </LinearLayout>

코드 작성 public class MainActivity extends AppCompatActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btnDownload = (Button) findViewById(R.id.download); OnClickListener downloadListener = new OnClickListener() { public void onClick(View v) { if (isNetworkAvailable()) { EditText url = (EditText) findViewById(R.id.url); DownloadTask downloadTask = new DownloadTask(); downloadTask.execute(url.getText().toString()); } else { Toast.makeText(getBaseContext(), "Network is not Available", Toast.LENGTH_SHORT) .show(); } }; btnDownload.setOnClickListener(downloadListener);

코드 작성 private boolean isNetworkAvailable() { boolean available = false; ConnectivityManager connMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connMgr.getActiveNetworkInfo(); if (networkInfo != null && networkInfo.isAvailable()) available = true; return available; } private String downloadUrl(String strUrl) throws IOException { String s = null; byte[] buffer = new byte[1000]; InputStream iStream = null; try { URL url = new URL(strUrl); HttpURLConnection urlConnection = (HttpURLConnection) url .openConnection(); urlConnection.connect(); iStream = urlConnection.getInputStream(); iStream.read(buffer); s = new String(buffer); } catch (Exception e) { Log.d("Exception while downloading url", e.toString()); } finally { iStream.close(); return s;

코드 작성 private class DownloadTask extends AsyncTask<String, Integer, String> { String s = null; @Override protected String doInBackground(String... url) { try { s = downloadUrl(url[0]); } catch (Exception e) { Log.d("Background Task", e.toString()); } return s; protected void onPostExecute(String result) { TextView tView = (TextView) findViewById(R.id.text); tView.setText(result); Toast.makeText(getBaseContext(), "Web page downloaded successfully", Toast.LENGTH_SHORT) .show();

매니페스트 파일 수정 ... <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

실행 결과

모바일 애플리케이션의 종류 모바일 애플리케이션의 종류 안드로이드 SDK를 사용하여 개발하고 APK 형식으로 사용자 장치에 설치되는 클라이언트 쪽 애플리케이션 웹앱(Web App)으로 웹 표준을 사용하여 개발하고 사용자는 웹 브라우저를 통해 액세스하는 방법이다. 이 경우에는 사용자 장 치에 설치할 필요가 없다.

웹앱의 종류

WebView 위젯 안드로이드에서 웹 서버로부터 웹페이지를 읽어서 웹 브라우저처럼 화면에 표시하는 것이 가능할까? 안드로이드에서 웹 서버로부터 웹페이지를 읽어서 웹 브라우저처럼 화면에 표시하는 것이 가능할까? WebView 위젯을 사용하면 가능하다. WebView 위젯은 WebKit이라는 엔진을 사용하여서 HTML 문서를 해석하여서 화면에 그려준다.

WebView 사용 방법

레이아웃 파일

예제: 나만의 웹브라우저 작성

사용자 인터페이스

코드

메니페스트 파일

실행 결과

XML 처리 인터넷을 통하여 전달되는 데이터는 주로 XML 형식

XML 파서 DOM 파서 SAX 파서 PullParser 파서

DOM DOM(Document Object Model)은 W3C의 표준으로 XML 문서에 접 근하고 처리하는 표준적인 방법을 정의 DOM은 XML 문서를 트리 구조로 표현한다. DOM은 문서 요소의 객체(object), 특징(property), 메소드(interface) 를 정의

DOM

예제 기상청에서 제공하는 특정한 위치의 정보를 해석하여서 화면에 시간 에 따른 온도와 날씨만을 표시하는 애플리케이션

사용자 인터페이스 사용자 인터페이스를 XML로 정의

코드 작성 @SuppressLint("NewApi") public class MainActivity extends AppCompatActivity { TextView textview; Document doc = null; LinearLayout layout = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textview = (TextView) findViewById(R.id.textView1); } public void onClick(View view) { GetXMLTask task = new GetXMLTask(this); task.execute("http://www.kma.go.kr/wid/queryDFS.jsp?gridx=61&gridy=125");

코드 작성 // private inner class extending AsyncTask @SuppressLint("NewApi") private class GetXMLTask extends AsyncTask<String, Void, Document> { private Activity context; public GetXMLTask(Activity context) { this.context = context; } @Override protected Document doInBackground(String... urls) { URL url; try { url = new URL(urls[0]); DocumentBuilderFactory dbf = DocumentBuilderFactory .newInstance(); DocumentBuilder db; db = dbf.newDocumentBuilder(); doc = db.parse(new InputSource(url.openStream())); doc.getDocumentElement().normalize(); } catch (Exception e) { Toast.makeText(getBaseContext(), "Parsing Error", Toast.LENGTH_SHORT).show(); return doc;

코드 작성 @Override protected void onPostExecute(Document doc) { String s = ""; NodeList nodeList = doc.getElementsByTagName("data"); for (int i = 0; i < nodeList.getLength(); i++) { s += "" + i + ": 날씨 정보: "; Node node = nodeList.item(i); Element fstElmnt = (Element) node; NodeList nameList = fstElmnt.getElementsByTagName("temp"); Element nameElement = (Element) nameList.item(0); nameList = nameElement.getChildNodes(); s += "온도 = " + ((Node) nameList.item(0)).getNodeValue() + " ,"; NodeList websiteList = fstElmnt.getElementsByTagName("wfKor"); Element websiteElement = (Element) websiteList.item(0); websiteList = websiteElement.getChildNodes(); s += "날씨 = " + ((Node) websiteList.item(0)).getNodeValue() + "\n"; } textview.setText(s);

실행 결과