Uzi maalumu kwa ajili ya kujifunza namna ya kutengeneza Android Apps

JavaScript is similar to C# however java ni tofauti kabisa, javaScript ni object based(inatumia references to call functions), java however is more similar to HTML . Unity3d inatumia C# na javaScript. I'm currently using C#
to create a game (Images below)

Screenshot (16).png
Screenshot (61).png
Screenshot (64).png
 
Inawezekana kabisa kuunda app, lakini unaufahamu kuhusu QT framework ambayo hii pia hutumika kutengeneza app za android na inatumia c/c++?, lakini nakushauri chukua muda wako kujifunza JAVA kama unajua programming haitakushinda kujifunza JAVA ndani ya muda mfupi. lakini kama hutopenda kujifunza JAVA android wana kitu kinaitwa Native Development Kit ambayo utaweza kuunda app kwa kutumia c/c++, link ya sdk kwa ajili ya NDK hii hapa chini
NDK Downloads | Android Developers
Nadhani unajua sana compyuta nataka tujaribu kufanya dili je upo tayari
 
Habari za siku,

Wakati tuliweza kuunda interface yetu ya APP ambayo tunaita tipCalculator.
Kumbuka lengo la app app hii ni kwa ajili ya kufanya mahesabu ya billi ambayo mtu atakuwa ametumia na kisha atalipa kiwango cha ziada ambacho kipo katika asilimia kutokana jumla ya bili aliyotumia kama atalizishwa na huduma.

Asilimia ya viwango vya ziada zimewekwa kwenye "progress bar" na kiwango cha juu ni 30% mtumiaji atakuwa anaimove hii bar ili kuweka asilimia ya ziada atakayolipa.

Niliamua kuiboresha hii interface na sasa itakuwa na muonekano huu.

modifiedapp.PNG

Hatua inayofuata ni kufanya programing, baadae tutacustomize themes ili uweze kuweka rangi ambayo wewe unayoitaji kwa mfano kubadili hiyo rangi ya title bar inayoonyesha jina la app pia jinsi ya kubadili rangi ya hiyo progress bar.
 
Tuanze kufanya programming ili app yetu iweze kuendana na matukio ambayo sisi tunaitaji hiyo apps ifanye,

Hatua ya kwanza tunahitaji tu-import classes mbalimbali ambayo yataitajika kutumika na contents ambazo tumeweka katika screen(interface) yetu.

Code:
import android.os.Bundle; //kwa ajili ya kuhifadhi state ya app kwa wakati huo
import android.support.v7.AppCompatActivity ;//base class ambayo inasaidia app kurun vizuri hata kwenye versions za android za zamani
import android.widget.EditText; //class ambayo huwezesha kuingiza texts
import android.text.Editable;  //hii ni kwa ajili ya kuhandle events za text na kufanya mahesabu pindi tu text ikiingizwa
import android.widget.SeekBar; //kwa ajili ya kubadili asilimia ya kiwango cha ziada
import android.text.TextWatcher; //EditText listener
import android.widget.SeekBar.OnSeekBarChangeListener; //seekbar listener
import android.wideget.TextView ;//kwa ajili ya kuonyesha text mbalimbli
import java.text.NumberFormat;//kwa ajili ya kuset aina ya sarafu kwa hapa tutamia $(dollar)
Then baada ya hapa nitaendelea na sehemu zingine, inabidi ujaribu kufuatilia hizo class kiundani kwa hapa sitozielezea sana
 
Baada ya kuimport Classes tunazohitaji sasa tutaanza kudeal na MainActivity ambayo ni subclass ya AppCompatActivity, hili file java hutengenezwa automatic na IDE kazi yako itakuwa ni kuweka code zinazohitajika, kwa hiyo tunaanza kwa kufanya declarations.
Code:
public class MainActivity extends AppCompatActivity {
    private double billAmount=0.0;//hiki ni kiasi cha mwanzo kabla ya kiasi kipya kuingizwa
    private double percent=0.15; //hii ni kiwango cha asilimia cha nyongeza cha mwanzo
    private TextView amountTextView; //inaonyesha kiasi kilicholipwa
    private TextView percentTextView; // inaonyesha asilimia ya nyongeza
    private TextView tipTextView; //inaonyesha nyongeza ambayo itapatikana kwa kuchukua asilimia na kuzidisha kiwango halisi.
    private TextView totalTextView;//jumla ya kiasi chote ambayo itapatikana kwa kuchukua kiasi kilicholipwa na kiasi cha ziada 
    private static final NumberFormat percentFormat=NumberFormat.getPercentInstance();//hii kwa ajili ya kuonyesha alama ya asilimia(%)
    private static final NumberFormat currencyFormat=NumberFormat.getCurrencyInstance();//kwa ajili ya kuonyesha alama ya dola ($)
Hapo tayari tumeshafanya declaration ya variable mbalimbali, kwenye java huwa inahitaji kufanya overriding ya methods mbalimbali, na hivyo kwenye android tutakuwa tuna-override baadhi ya methods ambazo ni built in.

Kwenye android kuna method ambayo inafungua(initialize) ule muenakono wa app (GUI), hii method huitwa
Code:
onCreate
, methods hii ndio itaanzisha components zako zote za app, na pia itahifadhi state ya app endapo kunatokea app nyingine ambayo unakuwa unadeal nayo wakati kwa mfano mtu akikupigia simu utapokea simu na kuacha app hii ile state ambayo umeiacha basi inahifadhiwa kwenye hii method na pindi ukirudi utaikuta app kama ilivyo

Hii onCreate method inatakiwa iwe simple kuepukana na tatizo la ANR(application not Responding), tuweke codes zetu sasa.
Code:
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);//inflate GUI
    //get reference programmatically manipulated TextView
    amountTextView=(TextView)findViewById(R.id.amountTextView);
    percentTextView=(TextView)findViewById(R.id.percentageTextView);
    tipTextView=(TextView)findViewById(R.id.tipTextView);
    totalTextView=(TextView)findViewById(R.id.totalAmountTextView);
    EditText amountEditText=(EditText)findViewById(R.id.amountEditText);
    amountEditText.addTextChangedListener(amountEditTextWatcher);
    //set percentSeekBar;s onseekBarChangeListener
    SeekBar percentSeekBar=(SeekBar)findViewById(R.id.percentSeekBar);
    percentSeekBar.setOnSeekBarChangeListener(seekBarListener);

}
Nitafafanua hizo code kwenye post inayofuata
 
Kwenye classes ambazo tulizi-import tunaanza kuzifanyia kazi hapa. kwenye method onCreate unaona kuna parameter iliyoondikwa Bundle saveInstanceState, hii kazi yake ku-maintain hali ya app kama ilivyo endapo kuna mabadiliko ambayo mtumiaji ameyafanya au kuna app nyingine imeingia ghafla mfano message au kupiga simu au ukafungua app nyingine.

Kuna method setContentView yenye parameter R.layout.activity_main hii ndio inafungua ile interface ambayo tumeingeneza huko nyuma, kumbuka GUI kwenye android hudesigniwa kwenye xml files, R ni class linaloinvolve ints za variable mbalimbali na ndio class inayofanya mawasiliano kati ya java kuaccess xml components programmatically, layout ni folder lenye xml files zenye GUI, activity_main hii ni xml file ambapo kwa hapa ndio user interface(GUI) yetu.

Tulipokuwa tunaunda GUI mwanzoni kabisa kila component tulikuwa tunaipa ID (id). id ni class ambalo lina constants kwa ajili ya views mbalimbali tulizetengeneza hii inasaidia java kuiaccess hizo components za GUI ambazo tuliziunda programmatically na kisha kuanza kufanya programming ili app ifanye kile ambacho unakilenga.

Ili uweze kuaccess hizo views baada ya kufanya declaration basi utatumia method ya
Code:
findViewById(R.id.jina_la_id_uliyoiandika)
Mfano:
Code:
totalTextView=(TextView)findViewById(R.id.totalAmountTextView);

lakini u-typecast kama apo juu inavyoonekana. ni vizuri ukachimba kiundani zaidi
 
METHOD YA KUFANYA CALCULATIONS YA KIASI CHA JUMLA
Code:
private void calculate(){
    percentTextView.setText(percentFormat.format(percent));//kwa ajili ya kuonyesaha alama ya asilimia(%)
    double tip=billAmount*percent;
    double total=billAmount+tip;
    tipTextView.setText(currencyFormat.format(tip));//kwa ajili ya kuonyesha text ambapo hapa kiasi cha ziada
    totalTextView.setText(currencyFormat.format(total));// kwa ajili ya kuonyesha kiasi cha jumla

}
 
Congiguration ya seekBar
seekbar ni kama progress bar ambayo mtumiaji wa app anaweza aka-imove ni kama inavoonekana kwenye interface yetu kule juu.
Hii yenyewe inaonyesha asilimia ambazo mtu yuko tiyari kulipa kama kiasi cha ziada kutokana na kiasi alichoingiza kutoka 0 hadi 30, ambapo mtu akimove inakuwa inajicalculate mara kwa mara na kwa kutumia method ya hapo juu, code zake ni hizi zifuatazo.
Code:
private final OnSeekBarChangeListener seekBarListener=new OnSeekBarChangeListener() {
    @Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
        percent=(double)progress/100.0;//hapa inaibadili hiyo asilimia kuwa kwenye desimali
        calculate();//hapa inafanya calculation kadri seekBar inavyomove

    }

    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {

    }

    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {

    }
};
 
CONFIGURATION KUINGIZA KIASI (TEXTS)
Hii app tunataka mabadiliko ya kiasi cha jumla yawe yanatokea pindi tu mtumiaji akiingiza kiasi au seekbar ikibadilishwa level yake, hivyo hapa pia methods za textWatcher na Editable zitahusika,

Code:
 private final TextWatcher amountEditTextWatcher=new TextWatcher(){
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            try {
                billAmount = Double.parseDouble(s.toString()) / 100;//android text zake huwa inaziconsider kama Strings kwa hiyo hii method hubadili string na kuwa mtindo wa Double.
                amountTextView.setText(currencyFormat.format(billAmount));//
            }
            catch(NumberFormatException e){
                amountTextView.setText("");//endapo hakuna kiasi kilichoingizwa basi kiasi cha jumla kitakuwa zero
                billAmount=0.0;
            }
            calculate();//inafanya calculations tena

        }

        @Override
        public void afterTextChanged(Editable s) {

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }
    };


}
Hapa ndipo tumekamilisha app yetu na hivyo kujiandaa kwa ajili ya app inayofuata. Nashauri ungeingia kiundani zaidi kwa sababu sina muda wa kutosha wa kueleza kila kitu. tuwe pamoja kwenye sehemu zinazofuata
Screenshot_2017-12-30-13-46-14.png

Screenshot_2017-12-30-13-46-24.png


Hivi ndivyo inavofanya kazi kwenye simu.
 
App Inayofuata itakuwa kwa ajili ya kuplay Music au audio yoyote ile, app tutaita JF Music Player, tutamia icon ya JamiiForums kama launch icon, pia itakuwa na feautures za play, previous na next. applications hii itakuwa na feature hizo chache kwa kuanzia ni hii itakuwa ni app namba tatu katika mfululizo wa hii training. kwa leo niishie hapa mpaka next time.
 
Mkuu samahani kidogo hii JAVA unayoizungumzia ni tofauti na javascript? Mi bado ni mchanga kwenye ulimwengu huu wa programming baada ya kumaliza kujifunza html + CSS sasa nmeanza kujifunza javascript sasa ndo hii hii unayoizungumzia au ni kitu kingine?

Sent using Jamii Forums mobile app
yeah java na JavaScript in tofauti...
 
Za masiku wanajamvi, Leo nitaendelea la somo la kutengenea application inayohusiana na Audio Player.
Application ninazoenda kuzielez zituwa tatu, ya kwanza nitaita JF Audio hii nitacompile ikiwa na audio file ndani yake.

Application ya pili na yenyewe itahusiana na audio player ambayo nimeipa jina la JF audio2 hii tutaongea feature ya scratching hii feature ni nzuri kwa wale ambao wana plan ya kutengeneza DJ scratching applications.

Na application ya tatu pia ni ya audio player ila hii itakuwa advanced ambapo tutaonyeshana jinsi ya kuacess audio files ambazo umezihifadhi kwenye simu yako au memory card yako ya simu

Applications zetu zitatumia logo za JamiiForums( JamiiForums nitaumia logo yenu kwa malengo ya kielimu tu na si vinginevyo) kama launch icon na screen logo, pia nitatumia mp3 audio ya wimbo wa usije mjini.

Pia kwako ww unaweza tumia images na audio yoyote ile unayotaka uzuri wa Android inasapoti aina nyingi za audio.

JF AUDIO APP
4jf.PNG
Hatua ya kwanza ni kutengeneza User Interface, Inteface itakuwa ni ya kawaida tu na haitakuwa na vitu vingi kama unavyoweza kuona hapo juu.

1. Chagua layout ambayo ungependelea kuitumia, mimi Hapo nimetumia GridLayout lakini kurahisisha kazi kwako ww nakushauri uitumie default Layout ambayo ni RelativeLayout. Tutakachokifanya ni kudrag na na kudrop.

2. Tunatakiwa tuongeze image(picha) ambayo itatokea kwenye screen yako ya simu kama launch icon. tumia image yoyote.

app.PNG

Kushoto kabisa mwa screen ya android studio kuna sehemu imeandikwa app, ili kuweka lauch icon right click hiyo sehemu ya app itakuja menu utachagua "New" ni option ya kwanza, kisha itatokea machagua mengine utachagua image Asset, kiufupi App>New>Image Asset>Asset Type>Image, kisha utachagua image kutoka kwenye kompyuta yako.
kitu kama hiki kitatokea.

2JFA.PNG


3. Tutaanza ku-drag na ku-drop features kwenye screen yetu ambayo ina feauters za Button,ImageView na SeekBar.
Delete neno new text kwenye screen. kwa kuwa kitu cha kwanza tunachotaka kitokee ni logo ya JF hivyo tuta-drag ImageView kutoka sehemu ya widgets na kuiweka sehemu husika ambayo inaonekana hapo juu image ya kwanza.

Halafu Copy image ambayo utaitumia kama logo kisha paste kwenye forder iliyoandikwa drawable, inabidi tuipe id lakini default Id iliyotumika hapo inaitwa "imageview" kwa sasa sio muhimu sana.

app1.PNG


Upande wa kulia kwa chini sehemu ya Properties kama inavyoonekana hapo juu tunatakiwa tuiweke image yenyewe husika utashuka chini mpaka sehemu iliyoandikwa src halafu kwenye sehemu iliyoandikwa @drawable/jfmm huwa iko empty ila hiyo ni address ya image yangu niliyochagua ili na ww uchague click hiyo sehemu kulia kuna button inatokea ikiwa na vinukta vitatu halafu itakupeleka sehemu nyingine na options bonyeza sehemu iliyoandikwa drawable halafu utatafuta image kwenye list image zitakazoenekana, click baada yapo image itatokea kwenye screen.

4. Kutoka upande wa widget kwa mara nyingine drap and drop kitu kinaitwa "seekBar" kwenye program languages zingine hutambulika kama progressbar, hii i-drop kwa chini ya image kama inavyoonekana image ya kwanza kabisa inavyoonekana, lengo la progress bar hapa ni kwa ajili ya ku-control sauti tu.

5. Hatua ya mwisho kutoka kwenye widget tena nenda sehemu iliyoandikwa button na u-drag na ku-drop buttons mara tatu na uzi-place sehemu yoyote kwenye screen. Kikawaida ukiweka button kwenye screen huwa zinaambatana na neno "new button" kubadilisha hayo maneno na kuweka neno ulitakalo click button kwenye screen nenda kulia kwenye upande wa Properties shuka chini tafuta sehemu imeandikwa "Text" kicha click na uandike neno unalitaka kama "play" nk, utafanya hivyo kwa kila button.

3jfa.PNG


Kinachofuata sasa ni kufanya programming, na kama kawaida tunatumia java programming, bila kusahau tunapaswa audio file ambalo tutatumia, kuongeza audio file upande wa kushoto right click forder ilioandikwa "res" kama inavyoonekana hapo juu halafu chagua new directory na ulipe jina la "raw", kisha copy audio file lolote na ulipate kwenye hilo forder la "raw"
 
Class ambayo inatumika kwenye maswala ya audio, camera na image processing kwa upande wa Android huwa ni class inaitwa media kwa upande wa audio tunatumia MediaPlayer class.
Kabla ya kuanza kufanya programming yaani kuingiza logic tuangalie classes mbalimbali ambazo zinahusiana na media.
1. AudioRecord - hii ni class inayotumika kwenye android programming kwa ajili ya kurecord audio mbalimbali
2. AudioManage - class kwa ajili ya ku-access sauti na rings
3. MediaPlayer - Class kwa ajili ya ku-control audio au video class hii ndio tutashughulika nayo hapa kwa kiasi kiasi.
4. MediaRecord -
5. MediaStore - Class inayotumika ku-access mafile yako ya audio, video au images yaliyohifadhiwa kwenye simu yako(Internal Storage na External Storage). Tutaimia hii class baadae baada ya kupata misingi ya Media inavyotumika kwenye android.

Hizo ni baadhi ya class ambazo ni vizuri ukajifunza zaidi kwa wakati wako, sasa tuendelee na uundaji wa application yetu ya JF Audio. Application nitaunda kwa muundo wa kuifanya nyimbo ijurudie baada ya kufika mwisho kwa maana method ambayo ipo kwenye
Code:
MediaPlayer
class kwa ajili ya nyimbo kujirudia huitwa
Code:
OnCompletionListener
,pia methods zingine ambazo ni
Code:
onStart
,
Code:
onStop
pamoja na
Code:
onCompletion
yenyewe.

MainActivity.java
Code:
import android.media.MediaPlayer;//kwa ajili ya kucontrol audio yaani playback
import android.media.MediaPlayer.OnCompletionListener;//kwa ajili ya kufanya audio ijurudie ikifika mwisho
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle; //kuhifadhi currently state ya app
//tunadeclare class kwa mfumo wa inheritance pamoja na interface kutumia method ya OnCompletionListerner
public class MainActivity extends AppCompatActivity implements OnCompletionListener{
   MediaPlayer media ;// object itakayotumika kuaccess methods mbalimbali za MediaPlayer
// method ya ku-initialize interface
   public void onCreate(Bundle savedInstance){
     super.onCreate(savedInstance);
     setContentView(R.layout.activity_main);
  }
//method ya kuopen audio file kumbuka audio ipo kwenye folder la raw nyimbo ninayoitumia inaitwa usije_mjini
public void onStart(){
super.onStart();
media=MediaPlayer.create(this,R.raw.usije_mjini) ;//tunafungua audio file letu
media.setOnCompletionListener(this);//tunaset audio kama ikiisha ijirudie tena
media.start();
}
//method hii tutaimia kwa ajili ya ku-realse audio ili baadae onCompletion iweze kulitumia file tena
public void onStop(){
super.onStop();
media.stop();
media.release();
}
//implementation ya method ya kurudia nyimbo
public void onCompletion(MediaPlaye mp){
meda.start();
}
}
Kwenye code yetu hakuna sehemu yoyote ambayo nimetumia button wala seekbar kwa sasa hizo hazitofanya kazi tutazifanyia kazi kwenye post inayofuata.
 
50 Reactions
Reply
Back
Top Bottom