Mobil- és webes szoftverfejlesztés - 1. előadás¶
Bevezetés¶
Mobil piac szereplői¶
- Hálózati operátorok
- kiépíti, karbantartja a hálózatot
- biztosítja a készülékek közötti kommunikációt
- pl: T-mobil, telenor, vodafon
- Szolgáltatók
- pl hanghívás, videóhívás
- Készülékgyártól
- pl: Apple, Samsung, Huawei, Xaomi, ...
- Felhasználók
Mobilkészülék funkciói¶
- kb mindent tud
Platformok¶
- Symbian OS
- első okostelefon platform (kifejezetten mobilra készült)
- nem volt store
- c++ban lehetett fejleszteni
- nokiák futtatták főleg
- Java ME
- Python
- Windows Mobile
- Windows CE-re épült
- Windows Phone
- háttérbe került, leállították
- Maemo, Meego, Tizen, stb
- nem futottak be
- iOS
- Objective C, Swift
- csak OS X-en lehet rá fejleszteni
- picit prémium
- tableten, órán is elérhető
- Android
- nyílt forráskódú, ingyenes hardver
Android¶
- google brand-et épített rá (többen ismerik az OS-t mint a telefon márkát)
- egyik legelterjedtebb
- Google áll mögötte
- Android eszközök
- sok helyen elérhető → telefonon, tableten, autóba, okosórán, stb
Android története¶
- 2005-ben kezdték fejleszteni, 2008-ban jött ki, közben Google megvette
Android platform szerkezete¶

- Linux Kernel (ez az alapja)
- Driver-ek
- Memória kezelés, folyamatok ütemezése
- Alacsony fogyasztást elősegítő teljesítmény-kezelés
- Hardware Abstraction Layer (HAL)
- kommunikációt biztosítja
- Alkalmazás réteg
- itt futnak az alkalmazások
- ART: Android RunTime (virtuális gép)
- minden Android alkalmazás külön virtuális gép példányban fut (így nem egybe fagynak le)
- c, c++ban írt kód is futtatható, de az nem a virtuális gépen → veszélyes tud lenni
- Java API Framework
- Managers API-kat biztosít (pl Notification, Location)
- System Apps
- alap elérhető alkalmazások (tárcsázó, kamera, naptár)
- könnyű lecserélni ezen alap alkalmazásokat
- így mások ezek az alap alkalmazások különböző eszközökön
Androidos alkalmazások fejlesztése¶
- Android SDK (Software Development Kit)
- fejlesztői eszköz, emulátor (AVD Manager), Java, Kotlin
- Android NDK (Native Development Kit)
- C, C++ natív kód futtatásának lehetősége
- Android ADK (Accessory Development Kit)
- Android kiegészítő eszközök támogatása (dokkoló, egészségügyi eszközök, stb)
- Android Open Accessory protocol (USB és Bluetooth)
- Android Studio
- IntelliJ alapú fejlesztőkörnyezet
- Emulátor
Első program¶
-
Sima Java alapú verzió:
public class HelloAndroid extends Activity { //Activity őszosztályból származunk le public void inCreate(Bundle savedInstanveState) { super.onCreate(savedInstanceState); //Ős implementáció meghívása //TextView megjelenítése: TextView tv = new TextView(this); tv.setText("Hello BME!"); setContentView(tv); } } -
Java + XML UI verzió:
-
xml layout/main.xml ... <TextView android:id="@+id/tvHello" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/hello" /> ... -
java public class HelloWorldActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //XML alapú layout TextView myTextView = (TextView) findViewById(R.id.tvHello); //UI komponens kikeresése ID alapján myTextView.append("\n--MODIFIED--"); } }
-
-
Egyszerű esemény kezelés
java public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final TextView myTextView = (TextView) findViewById(R.id.tvHello); //final, mivel anonim osztályból férünk hozzá myTextView.appen("\n--MODIFIED--"); //egyszerű érintés esemény kezelése: myTextView.setOnClickListener(new OnClickListener() { public void onClick(View v) { myTextView.append("\n--CLICKED---"); } }) }
Kotlin¶
- Az előbbi kódrész Kotlin-ban:
class MainActivity: AppCompatActivity() { //leszármaztatás kettősponttal
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
myTextView.append("#") //kotlin bővítmény miatt használható
myTextView.setOnClickListener{ //lambda hívás
myTextView.append("\n--CLICKED--")
}
}
}
-
függvény átadása paraméterként
class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) btnTime.setOnClickListener(::click) //ez itt a paraméterként átadott függvény } private fun click(view: View) { Toast.makeText(this, timeText, Toast.LENGTH_LONG).show() //felugró ablak } }