SZOFTVERFEJLESZTÉS ANDROID PLATFORMRA. Dr. Iszály György Barna

Hasonló dokumentumok
Kommunikáció Androidon GSM hívás SMS küldés, fogadás Bluetooth NFC USB

SZOFTVERFEJLESZTÉS ANDROID PLATFORMRA. Dr. Iszály György Barna

Kommunikáció - Wi-Fi, Mobil internet - Bluetooth - GSM / GPRS és SMS - NFC

Broadcast Service Widget

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Szolgáltatói számok WAP, GPRS, MMS, beállítások


ANDROID ALKALMAZÁSFEJLESZTÉS

Vodafone-os beállítások Android operációs rendszer esetében

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

I. 288.: Utcai WiFi térkép

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

Mobil Informatikai Rendszerek

Mobil Partner telepítési és használati útmutató

Útmutató parkolás indításához és leállításához

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

Segédanyag: Java alkalmazások gyakorlat

Android alapú szoftverfejlesztés haladóknak oktatási segédanyag, mely a

Java Programozás 6. Gy: Java alapok. Adatkezelő 2.rész

Java Programozás 11. Ea: MVC modell

Android Wear programozás. Nyitrai István

Vodafone Magyarország Zrt. ÜZLETI ÁSZF MÓDOSÍTÁSAINAK LISTÁJA

Oszkar.com Android alkalmazás v1.2

Objektumorientált programozás C# nyelven

Segédanyag: Java alkalmazások gyakorlat

KFKI Unified Messaging Server (UMS) Felhasználói Útmutató


Stateless Session Bean

Rövid használati útmutató a Polycom HDX modell család modelljeihez

Objektumorientált programozás C# nyelven III.

Programozási nyelvek Java

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

OOP és UML Áttekintés

Kids phone használati útmutató

Gate Control mobilalkalmazás

2-VEZETÉKES KAPUTELEFON RENDSZER Telefonos illesztő / Telefonhívó modul. VDT-TPC Felhasználói és telepítői kézikönyv VDT-TPC. VDT-TPC Leírás v1.0.

Programozás II. ATM példa Dr. Iványi Péter

Mobil Informatikai Rendszerek

Tisztelt Ügyfelünk! Nokia 6230i Beállítások. Személyes profil létrehozása és beállítása :

Programozási technológia

Bejövő hívások kezelése a Taxawin Callback moduljával.

A rendszer célja. Funkciók

Java. Java Message Service. ANTAL Margit. JMS API technológia. ANTAL Margit. Sapientia - EMTE

Szoftver fő funkciói. Diszpécser rádió GPS nyomkövetés Adatátvitel és tárolás Telefonhívások kezelése 1 / 7

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Java és web programozás

Swing GUI készítése NetBeans IDE segítségével

MOBILTELEFONON keresztüli internet telefonálás

Még közelebb. a taghoz, Még közelebb

Overview. Service. Application Activity Activity 2 Activity 3. Fragment. Fragment. Fragment. Frag ment. Fragment. Broadcast Receiver

9. MPI

OOP: Java 8.Gy: Abstract osztályok, interfészek

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;

Reenger alkalmazás Felhasználói kézikönyv

Nexus GSM modul. GameOver. Telepítői és programozási útmutató

Számítógépes Hálózatok GY 3-4.hét

GPRS Remote. GPRS alapú android applikáció távvezérléshez. Kezelési útmutató

7. K: JAVA alapok Konzultáció

XML adatkezelés I. Az SAX szabvány. Dr. Kovács László Miskolci Egyetem Általános Informatikai Tanszék. XML adatok kezelési lehetőségei

ConCorde sphone 3100 Használati útmutató

Fábián Zoltán Hálózatok elmélet

1. Mire használható a ViCA (Virtuális Chipkártya Alkalmazás)?

Készülék beállítás. Tisztelt Ügyfelünk!

2-VEZETÉKES KAPUTELEFON RENDSZER GSM telefon illesztő VDT - GSM. VDT-GSM Leírás v1.0

ANDROID ALKALMAZÁSFEJLESZTÉS

Informatika terméktervezőknek

Bánsághi Anna

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

ZH mintapélda. Feladat. Felület

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

Szoftvertechnológia alapjai Java előadások

JNDI - alapok. Java Naming and Directory Interface

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés

KONTAKT Webalkalmazás útmutató. Dátum Módosította Leírás Verzió E- Group Kiindulási verzió E- Group Tördelés módosítása 1.

3. Egyszerű komponensek

Adabáziselérés ODBC-n keresztül utasításokkal C#-ban

Alap számológép alkalmazás

e-szignó Online e-kézbesítés Végrehajtási Rendszerekhez

Adatbázisok webalkalmazásokban

Web-technológia PHP-vel

WS-Pro WPX38 MD+ PROGRAMOZÓI KÓDOK ÖSSZESÍTÉSE

Adatforgalomra vonatkozó beállítások. Lépjünk be a Beállítások menübe

Java Programozás 8. Gy: Java alapok. Adatkezelő 4.rész

Objektumorientált programozás C# nyelven

QLink Universal SOFTPHONE - TELEPÍTÉSI ÚTMUTATÓ

Erste MobilBank Felhasználói kézikönyv

CVNI-G170 Pánikgomb karkötő. Használati útmutató

ecoline GSM Adapter TELEPÍTÉSI ÉS ALKALMAZÁSI ÚTMUTATÓ v2.0 és újabb modulverziókhoz Rev

Concurrency in Swing

Rövid használati útmutató az AVer H és HVC modellekhez

Jelentés (Általános beállítások) Ügyfél: Account 1

PT02 Kisállat GPS Nyomkövető Használati Útmutató. helyes beüzemelés érdekében. A képek csak tájékoztató

Flash és PHP kommunikáció. Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft

Figyelem : a 3220 központosított beállítási struktúrával rendelkezik ami lehetővé teszi az összes profil egy helyről történő elérését.

Tisztelt Ügyfelünk! I. Törzsszöveg

EME ZRT. Fizessen mobillal! Használati útmutató e-matrica

A Skype architektúrája. P2P hálózat Supernode ok, peer-ek, login server

2-VEZETÉKES KAPUTELEFON RENDSZER GSM telefon illesztő VDT - GSM. VDT-GSM Leírás v1.0

SZOFTVERFEJLESZTÉS ANDROID PLATFORMRA. Dr. Iszály György Barna

Átírás:

SZOFTVERFEJLESZTÉS ANDROID PLATFORMRA Dr. Iszály György Barna

TELEFON KEZELÉSE - EMULÁCIÓ A DDMS (Dalvik Debug Monitor Server) számos lehetőséget nyújt számunkra bejövő hívások szimulálása érkező SMS üzenetek emulálása Eclipse DDMS perspektívájában találjuk a DDMS menüpontot Emulator Control Másik lehetőség a már ismert Telnet kliense elérés telnet localhost 5554 gsm call <telefonszám> sms send <telefonszám>

SZOLGÁLTATÁSI INFORMÁCIÓK Az android.telephony csomag része a TelephonyManager osztály Feladata az eszközön elérhető telefonos szolgáltatásokkal kapcsolatos információk biztosítása a SIM kártya telefonszáma, A hálózati operátor kódja, Roamingadatok, stb. Le kell kérni a rendszertől a szolgáltatás referenciáját: TelephonyManager tm = (TelephonyManager) getsystemservice(android.content.context.telephony_service);

LEGFONTOSABB INFORMÁCIÓS METÓDUSAI getline1number() - stringként visszaadja az első SIM kártya számát. getnetworkoperator() - megadja az aktuális beregisztrált szolgáltató (MNC, mobile network code) és ország (MCC, mobile country code) kódját, string formátumban. getnetworkoperatorname() visszaadja a hálózati szolgáltató nevét getsimstate(): a SIM kártya jelenlegi állapota. SIM_STATE_READY - a kártya hívásindításra és fogadásra kész. SIM_STATE_NETWORK_LOCKE - a kártya zárolt, hálózati PIN szükséges a feloldásához. SIM_STATE_ABSENT - nincs elérhető kártya a készülékben. SIM_STATE_PIN_REQUIRED - PIN kód megadására várunk, addig csak segélyhívások érhetők el. SIM_STATE_PUK_REQUIRED: ugyanaz, mint a PIN_REQUIRED, de PUK kódra vonatkozóan. SIM_STATE_UNKNOWN - a kártya állapota ismeretlen (pl. állapotváltások között)

LEGFONTOSABB INFORMÁCIÓS METÓDUSAI getphonetype() - Az eszköz milyen típusú mobil hanghívások átvitelére alkalmas. PHONE_TYPE_GSM - jellemzően Európában használt átviteli mód. PHONE_TYPE_CDMA - tipikusan az Egyesült Államokban, vagy Kanadában használt átvitel. PHONE_TYPE_SIP - hangátvitel jellemzően internetes hálózaton PHONE_TYPE_NONE: hiányzó modul. Táblagépeken előfordulhat. isnetworkroaming() igaz, ha jelenleg roamingol a kártya Jogosultság - android.permission.read_phone_state

FELIRATKOZÁS MOBILHÁLÓZATI ESEMÉNYEKRE private PhoneStateListener sajatphonelistener = new PhoneStateListener() { public void oncallstatechanged(int state, String incomingnumber) { // incomingnumber a bejövő hívó száma try { if (state == TelephonyManager.CALL_STATE_RINGING ) // Bejövő hívás catch (Exception e) { Log.i("Kivétel", "PhoneStateListener() e = " + e); //Telephony Manager szolgáltatás igénybe vétele TelephonyManager tm = (TelephonyManager) getsystemservice(telephony_service); //Feliratkozás változás-figyelésre tm.listen(sajatphonelistener, PhoneStateListener.LISTEN_CALL_STATE);

FELIRATKOZÁS MOBILHÁLÓZATI ESEMÉNYEKRE További állapotok: CALL_STATE_OFFHOOK: legalább egy hívás folyamatban, vagy tartásban van. CALL_STATE_IDLE: nincs hívási aktivitás Mobilnet állapotai: ondataconnectionstatechanged(int state) ezt a callback függvényt kell alkalmazni LISTEN_DATA_CONNECTION_STATE ezt kell megadni a listen() függvénynek A lehetséges TelephonyManager állapotok DATA_CONNECTING - mobilnet kapcsolat felépítése folyamatban van. DATA_CONNECTED - a mobilnet felépült. DATA_SUSPENDED - a mobilnet kapcsolat felfüggesztésre került, például egy bejövő hanghívás miatt. DATA_DISCONNECTED - a mobilnet nem érhető el.

TELEFONHÍVÁS KEZDEMÉNYEZÉSE Alapértelmezetten szükséges hozzá a android.permission.call_phone jogosultság A android.permission.call_privileged joggal az alkalmazásunk képes bármilyen szám, akár segélyhívó közvetlen hívására is anélkül, hogy a felhasználónak a hívást a tárcsázó alkalmazáson keresztül előzetesen még jóvá kellene hagynia. Intent hivointent = new Intent(Intent.ACTION_CALL); hivointent.setdata(uri.parse("tel:+36301234567")); try{ startactivity(hivointent); catch (ActivityNotFoundException e) { //TODO: nem találtunk tárcsázóprogramot

TELEFONHÍVÁS KEZDEMÉNYEZÉSE Amennyiben ismerjük a kapcsolatlistán található hívandó személy ID-jét, akkor a következő is alkalmazható Uri.parse("content://contacts/people/" + SZEMÉLY_ID) Vészhívást csak az ACTION_DIAL-on keresztül kezdeményezhetünk! Itt a hívást a tárcsázó programon belül nekünk kell kezdeményeznünk. ACTION_CALL_BUTTON ez az intent a tárcsázó gomb megnyomásával egyenértékű. Nem ad át a tárcsázó programnak hívandó számot.

ÜZENETEK KEZELÉSE SMS KÜLDÉSE Jogosultság - android.permission.send_sms Intent smskuldintent = new Intent(); smskuldintent.setaction(intent.action_sendto); smskuldintent.setdata(uri.parse("tel:+36301234567")); smskuldintent.putextra("sms_body", "Szia! Ez egy tesztüzenet"); try{ startactivity(smskuldintent); catch (ActivityNotFoundException e) { //TODO: Nincs alapértelmezett SMS küldő alkalmazás

ÜZENETEK KEZELÉSE SMS FOGADÁSA SMS érkezésekor broadcast üzenet generálódik saját BroadcastReceiver osztályt kell létrehoznunk Az üzenet metaadatai az Intemt extráiban jelenik meg pdus kulcs alatt Metaadatok lekérdezése - android.telephony.smsmessage.createfrompdu() Jogosultság - android.permission.receive_sms

SMS FOGADÁSA SAJÁT BROADCASTRECEIVER public class IncomingSMSReceiver extends BroadcastReceiver { private static final String SMS_RECEIVED = "android.provider.telephony.sms_received"; public void onreceive(context context, Intent intent) { if (intent.getaction().equals(sms_received)){ SmsManager sms = SmsManager.getDefault(); Bundle csomag = intent.getextras(); if (csomag!= null){ Object[] pdus = (Object[])csomag.get("pdus"); SmsMessage uzenet = null; for (int i = 0; i < pdus.length;i++){ uzenet=smsmessage.createfrompdu((byte[])pdus[i]); String torzs = uzenet.getmessagebody(); String felado = uzenet.getoriginatingaddress();

ÜZENETEK KEZELÉSE MMS KÜLDÉSE Jogosultság - android.permission.send_sms A címzett telefonszáma extra, amit az address kulcs határoz meg. Az üzenet szintén extra, sms_body kulcs rejti. Az intent adat a csatolt fájl útvonala lesz, Uri.parse-ban megadva. settype() határozza meg a csatolás típusát. Az intent adatfolyamát az EXTRA_STREAM-ben is meg kell határozni (csatolt fájl útvonala).

PÉLDA MMS KÜLDÉSÉRE File csatoltfajl = new File("útvonal\képfájl_neve.jpg"); Uri csatolasutvonala = Uri.parse(csatoltFajl.toString()); Intent mmskuldintent = new Intent(); mmskuldintent.setaction(intent.action_send); mmskuldintent.putextra("address", "+3630123456"); mmskuldintent.putextra("sms_body", "Szia! Csatoltam egy jó képet!"); mmskuldintent.setdata(csatolasutvonala); mmskuldintent.settype("image/jpg"); mmskuldintent.putextra(intent.extra_stream, csatolasutvonala); try{ startactivity(mmskuldintent); catch (ActivityNotFoundException e) { //TODO: Nincs alapértelmezett MMS küldő program

TELEFONHÍVÁSOK KEZELÉSE A HÁTTÉRBEN Saját BroadcastReceiver osztály szükséges hozzá Jogosultság - az android.permission.phone_state Szükséges intent-filter - android.intent.action.phone_state. Az intent extrái között kapjuk meg a hívással kapcsolatos információkat: TelephonyManager.EXTRA_STATE - jelzi az új állapotot TelephonyManager.EXTRA_STATE_RINGING - jelzi a csörgést TelephonyManager.EXTRA_INCOMING_NUMBER a hívó száma EXTRA_STATE_OFFHOOK ez jelzi, hogy a hívás felépült a két fél között. EXTRA_STATE_IDLE az az állapot, amikor a hívás elutasításra kerül.

PÉLDA BEJÖVŐ HÍVÁSOK KEZELÉSÉRE public void onreceive(context context, Intent intent) { String state = intent.getstringextra(telephonymanager.extra_state); if(state.equals(telephonymanager.extra_state_ringing)){ // Csörög a telefon, a bejövő szám a // TelephonyManager.EXTRA_INCOMING_NUMBER-ben van else if(state.equals(telephonymanager.extra_state_offhook)){ // A hívás fogadva else if (state.equals(telephonymanager.extra_state_idle)){ // A hívás eldobva, vagy elutasítva

PÉLDA BEJÖVŐ HÍVÁSOK KEZELÉSÉRE A Manifest állományban regisztrálni kell a receivert <receiver android:name= SajátBroadcastReceiverOsztályNeve > <intent-filter> <action android:name= android.intent.action.phone_state /> </intent-filter> </receiver>

KIMENŐ HÍVÁSOK KEZELÉSE Hívott szám helye az intent extra részében TelephonyManager.EXTRA_PHONE_NUMBER Megcélzott esemény - android.intent.action.new_outgoing_call Jogosultság - android.permission.process_outgoing_calls public void onreceive(context context, Intent intent) { String state =intent.getstringextra(telephonymanager.extra_state); if(state.equals(telephonymanager.extra_state_ringing)){ // Kicsöng a telefon, a hívott szám a // TelephonyManager.EXTRA_PHONE_NUMBER-ben van

KIMENŐ HÍVÁSOK KEZELÉSE A manifest állományban a következő bejegyzés szükséges <receiver android:name= SajátBroadcastReceiverOsztályNeve > <intent-filter> <action android:name= android.intent.action.new_outgoing_calls /> </intent-filter> </receiver>