Android Programjaim

Android fejlesztes, java, kotlin, web.. miegymas:)

Kotlin moka

2018. május 24. 09:13 - lacas82

Kicsit regen blogoltam, par eve abbahagytam, de megint nekikezdtem, valahogy jo erzes. Minden fele uj dologrol fogok irni megint, ami tetszik/nem tetszik. Lassunk egy kis kotlint.

Kotlin extensions!

Nezzunk egy peldat ra. Keszitesz egy extensions.kt nevu filet androidon, majd belerakod ezt

fun String.formatDate(): String {
val fromFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH)
val toFormat = SimpleDateFormat("yyyy.MM.dd HH:mm", Locale.US)
val date = fromFormat.parse(this)
return toFormat.format(date).toString()
}

private fun EditText.afterTextChanged(afterTextChanged: (String) -> Unit) {
this.addTextChangedListener(object : TextWatcher {
override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {}
override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {}
override fun afterTextChanged(editable: Editable?) {
afterTextChanged.invoke(editable.toString())
}
})
}

Ezek utan lesz egy shortcut method-od a String-re, vagy az EditText-re. (Extension)

Logger.E("2018-01-01 11:22:35".formatDate())

return: "2018.01.01 11:22"

 

Hat nem gyonyoru?

Vagy pl az apply, with

fun openNewIntent(c: Context, clazz: Class<*>) {
val intent = Intent(c, clazz).apply {
flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_SINGLE_TOP }
c.startActivity(intent)

}

with(Akarmi) {

  method1()
  method2()
  akarmi = vmi
}

singleton

object SomeSingleton {
init {
println("init complete")
}
}

lazy

companion object {
val instance: GitHubService by lazy {
val
retrofit = Retrofit.Builder()

.baseUrl("https://api.github.com/")
.build()
retrofit.create(GitHubService::class.java)
}
}


say goodbye to findviewbyid!!!


ugyan erre tobb megoldas is szuletett mar, butterknife, databinding, etc..

de itt van nekunk a kotlinos extension "synthetic" verzio

apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

van egy layoutod ugye, amiben van egy textview egy id-vel

    <TextView
        android:id="@+id/welcomeMessage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Hello World!"/>
 
MainActivityben egyszeruen meghivjuk:

   welcomeMessage.text = "Hello Kotlin!"

hogy hasznalni tudjuk, egyszeruen importaljuk be:

    import kotlinx.android.synthetic.main.activity_main.*

 
Bovebben:

https://antonioleiva.com/kotlin-android-extensions/

Címkék: kotlin

React Native-rol kis gondolatmenet

2018. május 21. 07:54 - lacas82

Kicsit koran van meg nekem, de azert megprobalok osszeszedett lenni. A react native tapasztalataimrol fogok irni egy kis szosszenetet. Tavaly ev vege fele nem volt mas munkam nativ androidban, igy 3-4 honapra elvallaltam egy react native fejlesztest. Gyakorlatilag 10+ evet webfejlesztettem, es android 8+ ev, valamint meglattam a react native peldakodokat, es pofon egyszerunek tuntek ezek utan. Ossze volt kb gyurva a webes tartalom a nativval, kis JS-el.
Ezek utan par nap alatt boven el lehet sajatitatni a nyelvet, egyedul talan a redux okozott fejtorest egy ideig.

Nagyon negativ leszek a posttal, mert oszinten amilyen konnyu a nyelv, maga a fejlesztes mar siralmas. Azt hiszem atom.io-t vagy vs.code-ot hasznaltam ra. (vs.code-ot hasznalok mostansag a ceges weblapom fejlesztesere, es arra elmegy)

Szoval a vs.code es atom.io-kkal a problemak: rekaftoralas, leginkabb ez hianyzott benne, persze sok apro dolog is van ami nem jarja. Egy android studion nevelkedett coder vagyok, eclipse utan. Eclipse-rol is azert valt az ember, mert keves. Legalabbis keves volt akkoriban. Erre odaraknak eled az AS utan egy ilyen rettenetet, amiben minden korulmenyes, refaktoralni eleg nehez... De igazabol meg ez se problema annyira. Inkabb VS.code, mint atom.io.

Magarol a nyelvrol mar beszeltunk, szinte css + javascript kis nativ elemszerusegekkel fuszerezve. Ezzel nincs bajom.

Akkor jojjon a kovetkezo: maga a build, a parancssorok, a stb.

Mert leginkabb itt valik fajdalomma az egesz tortenet. A Facebook azt szajkozza mekkora kiralysag az egesz es hogy sok nagy appot is ebben fejlesztenek. El nem tudom kepzelni ezt.

Nalam sok kis problema felmerult, amire most emlekszem az az, hogy pl:

- nem frissult a kod emulatoron
- dobta a piros hatteru random hibakat emulatoron
- nem frissult le a kod device-en
- dobta a console-ban a piros betus hibakat
- random hibak jottek elo, de ugy hogy semmit sem valtoztattam, egyik nap ment a build, masnap mar masik hibat irt buildkor...
- vagy pl egy terkepre akartam POI-t rakni (image-t), es egyszeruen nem ment, ezert egy sima kort kellett oda rakni, talan mert mindig kinagyitotta?
- hiaba irsz nekik a githubon, hogy segitsenek, nem megy ez meg amaz, nem nagyon tudjak az okat, vagy: "meg nincs implementalva"
- vagy latod, hogy az emailedre honapok mulva is jon az altalad megnyitott hiba topicra a next developer random hozzaszolasa, hogy neki sem megy, mit tegyen

Szoval ezek vicces/fajdalmas dolgok. Garantalom, hogyha kihivast keresel, es 2 het alatt 2 ev oregedest es osz hajszalat, akkor ezt a cuccot neked talaltak ki.

Jah meg egy olyan is volt, amit mar senki se tudott megoldani:D

- ugye vannak build parancsok react native-al, sajnos ha ezeket nem pont a megfelelo idoben es sorrendben irod be, elhasal az egesz folyamat...

- volt, hogy frissitettunk (alt+enter) a libraryk verziojat, majd jott egy ujabb build ugye, ilyenkor mar androidra nem is buildelt szerencsetlen. Erre senki se tudta a valaszt, miertjet. Egyedul ugyanis en voltam andoridbol/javabol olyan szinten, hogy rajojjek. (ez most nem henceges, de tenyleg, ha itt nem vagy profi androidbol+iosbol+webbol, akkor baszhatod, mert egyedul a budos eletben nem fogsz tudni fejleszteni normalisan ra szerintem)

tehat a hiba az volt, hogy ugye mikor lehuzza a sok kis libraryjat, akkor azok java projectek. es voltak olyan hibak benne, hogy xy projectben mar nem voltak olyan interface-ek, amikre hivatkozott a masik, stb... Na ebbol volt 3-4. Ezt igy kezzel kellett manualisan kicommentelni...

- ez az app pedig egy kulfoldi kis futar app volt, semmi nagy dolog nem volt meg benne...terkepes cucc az egesz kb, rendelesekkel..

Es akkor a megfelelo sorrend build+runra:

cd project
cd android && gradlew clean
cd .. && react-native start
cd project && react-native run-android


Osszegzeskent: Sok kis apro hibaval rendelkezik a react native, amit eddig meg egyertelmuen a fejleszto legyilkolasara talaltak ki. En nem ajanlom senkinek, de ha a kihivasokat szereted, akkor hajra. Nekem meg 18-20 evesen ment ez, de 35 evesen mar nem jo az infarktus kozeli allapot es a magas vernyomas. :D

Talan a Flutter mar orvosolja a crossplatform cuccok hibait, mivel a Google kesziti. Lehet, hogy 2018-ban sikerul letrehozni egy normalis crossplatform cumot, amivel nem lesz szivas fejleszteni? Orulet lenne...

Kotlin Bootcamp es Flutter udacity google videok

2018. május 17. 17:02 - lacas82

Bar kotlinban jo ideje dolgozom, de ezeket erdemes lesz megnezni kesobb. Sajnos most el vagyok havazva, de aki teheti nezzen ra ezekre. A Flutter annyira nekem a Google IO 18 alapjan nem igazan jott be, aztan ki tudja, kesobb lehet megszeretem. Csak mar csunya dolog a szegeny fejlesztot szivatni, hogy lassan hetente tanuljon uj dolgokat :D A minap megneztem par IO18 videot, de ugy 4-5 50 perces video utan feladtam, egyszeruen annyi info volt, hogy szethasadt a fejem:)

Remelem a flutter azert jobb lesz, mint a react native...A kotlint meg siman imadom.

Tehat a linkek:

https://eu.udacity.com/course/kotlin-bootcamp-for-programmers--ud9011

https://eu.udacity.com/course/build-native-mobile-apps-with-flutter--ud905

Címkék: flutter kotlin

Jquery maps libek - win d3.js

2018. május 17. 16:37 - lacas82

A sajat ceges weblaphoz kellett egy JQuery plugin ami tud aranylag eles mapeket vector-al rajzolni, es lightweight. Persze tudjon POI-t is kirakni, es lehessen mindent szinezni. Az se gond ha reszponziv...

Pár érdekesebb jquery maps plugin:

http://kartograph.org/showcase/

Ez elég bonyolultnak is tunik. Vektor terkepekre. Mintha terkepesz keszitette volna.

http://planetaryjs.com/examples/rotating.html

Ez 3D-s, tud POI-t is felrakni a foldgombre. Eleg jo kis cucc.

https://www.10bestdesign.com/jqvmap/

JQVMap, ez pl nagyon tetszik, de sajnos nekem az aktualis projecthez nem ilyesmi kellett.

Es vegul amit en hasznaltam fel:

https://medium.com/learning-new-stuff/d3js-map-who-is-smoking-weed-right-now-406e72688bd6

Itt azert voltak fajdalmak persze, mert reszponzivan kellett megirnom, de vegulis sikerult. :)

Voltak meg futottak kategoriak, mint pl a smallworld.js, de sok problema volt vele, es vagy 4 eves a kod szoval inkabb a d3.js maps-et hasznaltam...

https://d3js.org/

 

Címkék: maps jquery

Tizen SDK, Samsung Gear S3 Frontier teszt

2018. május 10. 08:51 - lacas82

Gondoltam veszek mar egy okosorat, mivel nem akartam mar tobb evet varni ra, hogy egy normalisabbat osszerakjanak, es talan mar elegge hasznalhatoak masnapsag.

Minden evben eddig, sot kb felevente megneztem az okosorapiacot, de sajnaltam ra a penzt, mivel mindig ugy gondoltam, hogy meg gyerekcipoben vannak, es nem nagyon erik meg az arukat.

Par gondolat mai szemmel az okosorakrol:

Meg mindig nem letezik normalisabb alternativa szerintem, ami teljes ertekuen hasznalhato. Amit manapsag a legjobbakat lattam...nos...a problemak veges tarhaza merult fel meg a legnagyobb gyartoknal is.

Ugye ezek a szokasos dolgok:

- kisebb uzemido/gyors merules
- fejlesztesi szempontbol egy kesz vicc egyik masik
- keves app/avagy keves ertekes alkalmazas ra
- tenyleges hasznalhatosag

Kicsit feltem az s3-tol, de jelenleg magyar piacon ez a legnepszerubb ora es a legszebb. Feltem az ora kulsejetol es mondjuk feltem a nagysagatol/meretetol/sulyatol is.

Bevallom meg voltam rendesen lepodve mikor felraktam a kozepes meretu csuklomra, mivel nem huzta le, es nem volt nehez. Regebben volt egy Timex oram, a sulya kb ugyanannyi, pedig ez tele van mindenfele cuccal azert.

Hasznalhatosag szempontbol viszont ha bekapcsolsz sok erzekelot (plusz GPS mondjuk, HR szenzor, stb), akkor mondjuk 60-70 perc alatt tud merulni az ora egy jo 20%-ot. Persze ezt ugy, hogy mindent mer kozben. (mar ha tud, mert a szivritmus szenzorral felmerultek vicces gondok: mikor regebben fejlesztettem MIFIT-re, sajnos ott is ez volt a problema: a szoros csuklot annyira nem szereti.)

Szoval ez a 20% ugy volt, hogy GPS, HR, stb szenzorok benn, es az ora nem volt mindig bekapcsolva, hogy lassam az idot. Viszont volt, hogy csatlakoztattam ra BT fulest ra es ugy hogy hallgattam a zenet kozben, sem merult erezhetoen gyorsabban.

A lepeseket jol meri, a HR-ben annyira biztos nem vagyok, mivel sok ilyen okoskarkotore kellett anno fejlesztenem, es hat azert nem bizok ezekben nagyon meg. De nyilvan egy ertelmesebb szenzort raktak itt bele. Bar anno a MIFIT-es karkotovel is meg lehetett jarni. :)

Ami meg zavart, hogy amikor nem vittem telot magammal, akkor az ora gyakran kiirta, hogy csatlakoztassam a telefon BT-hez. Ez roppant idegesito dolog.

Es most jonnek a negativumok erosen:

Android Studioban nevelkedett fejlesztokent elvarom, hogy az IDE hasznalhato legyen, es lehessen refaktoralni, stb. Tehat alap dolgok. Ezzel szemben mikor feltelepitettem ezt a rettenet Tizen SDK/IDE-t majd megutott a "guta" :D Hat en meg ilyen szornyuseget eletemben nem lattam.

Fejlesztoi szempontbol egy remalom az egesz. Az emulator/szimulator is egy kesz vicc, es gyakorlatilag mikor par sample projectet megneztem javascriptben, tudtam, hogy ebben en ugyan nem fogok semmit fejleszteni, mert ez egy oriasi fajdalom. Bevallom oszinten fejlesztettem mar react native-ban/vs.code, azis egy borzalom volt, de azok utan ez a Tizen IDE maga a horror.

A kovetkezo negativumok, hogy az oran nevetsegesen keves a minosegi app, es kevesen is fejlesztenek ra, ami van normalis az penzbe kerul. Egy egyszeru GPS appot akartam ami mondjuk 1-10 percenkent lementi a GPS adatokat valahova telefon nelkul. De eddig nem igazan talaltam ilyet ingyen.

Persze watchface-ekbol van egy kilo, de az nem orvosolja a minosegibb appok problemajat. Gyanitom, hogy sok fejleszto azert nem is fejleszt ra, mert a fejlesztes mai szemmel agyverzest okoz.

Egyebkent maga az ora igenyes, fantasztikus is lenne, ha ilyen egyszerubb dolgokat tudna rogziteni alapbol. A masik problema a samsung health. Sok dolog jo azert benne. Volt mar, hogy crashelt az app... vagy hogy ujra kellett csatizni a BT-t. Volt, hogy erdekes dolgokat produkalt.. Azert ez egy gyari app, es nem kis pistikek fejlesztettek. Elvarom hogy ilyen ne tortenjen. Hisz manapsag van mar azert firebase + crashlitics:D

Jelenleg a problemam az, hogy par nap utan kihasznalatlan az ora. Ugy erzem tobb dolgot is lehetne vele csinalni, ha megfelelo szoftverek lennenek hozza. Igy ez kicsit keveske. Tekintve az arat, ami jelenleg 85 ezer HUF. Szoval jottek a GPS app gondok, letoltottem a samsung sajat boltjabol par cuccot, ami elvileg kiirja lat/lng meg a hely nevet hol vagyunk eppen. Ez volt, hogy nem is mukodott, vagy csak X ido mulva, nagyon lassan pedig kinn voltam az utcan. Lehetseges, hogy osszefuggesben van a telefonnal valo osszekottetessel is, mert mintha az ora egyedul keptelen lenne meghatarozni azt, pedig latok olyat a speciben, hogy van benne GPS...

A masik, hogyha van benne GPS lat lng lekeres, akkor mi a feneert nem menti azt le valahova? Hat ez komolyan orulet. Mai napig nem talaltam egy appot ami megjeleniti terkepen merre jartam. A Samsung Healthben sincs ilyen... Ha erre alapbol nem kepes mondjuk a gyari szamlalos app, akkor ezzel oriasi gondok vannak,.

Ujabb problemak: Ha viszem a telot is az ora melle, akkor bizony a samsung health 2 fele szamol lepest pl.:

A telefon is szamolja meg az ora is. Ezt nem nagyon tudtam hova tenni. Furcsa adatok jottek igy egyutt ki. Ugyanarra mentem, de mintha ketszer szamolta volna. Miert? Ezek apro??? bosszusagok, amik fejlesztoi szemmel eleg bajosak es nem tudom elfogadni. Bevallom ezek utan gondolkodtam egy Android Wear alapu rendszeren, mert a Samsung Gear S3-ban vannak ugyan jo dolgok (csavargatos szamlap), de ez nekem keves.

Tobbet varok el meg mindig egy okosoratol.

Amiket elvarok 2018-ban:

- fenykepezo az oraban (tobb gyengebb teljesitmenyu kinai mar tudja)
- az ora teljes erteku legyen telefon nelkul (gps, uzemido, telefon)
- eredeti, minosegi appok

 

Címkék: tizen gear s3