Skocz do zawartości
andrzej1_1

Program który co jakiś czas wibruje w zależności od trybu

    Rekomendowane odpowiedzi

    Mam zrobione GUI:

    <?xml version="1.0" encoding="utf-8"?>
    <AbsoluteLayout
    android:id="@+id/widget31"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
    >
    <TextView
    android:id="@+id/widget28"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Wybierz tryb:"
    android:textSize="50px"
    android:layout_x="0px"
    android:layout_y="0px"
    >
    </TextView>
    <RadioButton
    android:id="@+id/widget29"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Tryb 1"
    android:layout_x="90px"
    android:layout_y="102px"
    >
    </RadioButton>
    <RadioButton
    android:id="@+id/widget30"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Tryb 2"
    android:layout_x="90px"
    android:layout_y="152px"
    >
    </RadioButton>
    </AbsoluteLayout>
    

    Wygląda to tak:

    schematf.jpg

    Teraz mam pytanie. Jak zrobić że gdy jest włączony tryb pierwszy to program coś robi, a gdy drugi to robi co innego?

    Edytowane przez andrzej1_1

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Tak, chodzi o wybór czynności. Tylko ja bym chciał bez przycisków żeby program sam sprawdzał co jest wciśnięte. Jak coś takiego zrobić?

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    CheckBox.isChecked();

    oczywiście isChecked() nie jest statyczne, mam nadzieje ze wiesz co to znaczy

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Napisałem coś takiego:

    Klasa:

    package my.lesson.services;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.content.Intent;
    import android.widget.Button;
    import android.view.View;
    import android.view.View.OnClickListener;
    
    public class myController extends Activity {
    
       @Override
       public void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.main);
    
           Button start = (Button)findViewById(R.id.tryb1);
           Button stop = (Button)findViewById(R.id.tryb2);
    
           start.setOnClickListener(startListener);
           stop.setOnClickListener(stopListener);
       }
    
       private OnClickListener startListener = new OnClickListener() {
          	public void onClick(View v){
          		Thread.sleep(10000);
    	public void vibrate (1000)
      	}	        	
      };
    
      private OnClickListener stopListener = new OnClickListener() {
         	public void onClick(View v){
         		Thread.sleep(10000);
    	public void vibrate (1000)
     	}	        	
     };
    }

    GUI:

    <?xml version="1.0" encoding="utf-8"?>
    <linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
       android:orientation="vertical"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       >
    <textview  
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:text="@string/hello"
       />
    <Button
    android:id="@+id/tryb1"
    android:text="Tryb Dnia"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    ></Button>
    <Button
    android:id="@+id/tryb2"
    android:text="Tryb Nocy"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"		
    ></Button>
    </LinearLayout>
    
    

    Mógłby ktoś sprawdzić czy działa?

    P.s Mam eclipse jednak nie mogę robić projektów do andka. WHY?

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    :facepalm1:

    program działa, robi dokładnie to co zaprogramowałeś ale problem tkwi w tym ze nie za bardzo wiesz co zaprogramowałeś, wiesz po co umieściłeś to:

    Thread.sleep(10000);

    pewnie żeby wibrator włączył się z opuszczeniem hmmm. tak się tego nie robi, ogólnie metody sleep się nie używa w takim czy inny przypadku

    PS. ten kod rozwiąże twój problem w inteligentny sposób, poniżej jest klasa którą umieszczasz w nowym pliku o takiej samej nazwie:

     public abstract class PlanedTask implements Runnable {
    
    private final Handler mHandler = new Handler();
    
    public void start(final int time) {
    	mHandler.removeCallbacks(this);
    	mHandler.postDelayed(this, time);
    }
    
    public void stop() {
    	mHandler.removeCallbacks(this);
    }
    
    public void run() {
    	execute();
    }
    
    protected abstract void execute();
    
    }

    używasz tego tak:

    private final PlanedTask execute = new PlanedTask() {
    
    @Override
    protected void execute() {
    	//tu wykonanie wibracji
    }
    
    };
    

    execute.start(2000);//to rozpoczyna odliczanie 2s
    

    Edytowane przez zawadaki

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    piotrpo
    P.s Mam eclipse jednak nie mogę robić projektów do andka. WHY?

    Zacytuję zawadakiego

    :facepalm1:

    Zainstalowałeś SDK i ADT?

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Już działa eclipse. Mam problem z buildowaniem:

    1)wyskakuje błąd z klasą myController że jest nie zdefiniowana. I tu pytanie: gdzie i jak to zdefiniować?

    2)wyskakuje syntax error przy: public void vibrate (1000). Why?

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    gzajac
    1)wyskakuje błąd z klasą myController że jest nie zdefiniowana. I tu pytanie: gdzie i jak to zdefiniować?

    Przede wszystkim przeczytać dokumentację i poczytać ogólnie jak się pisze najprostszą aplikację na Androida. W tym punkcie brakuje Ci zapewne wpisu w AndroidManifest.xml

    2)wyskakuje syntax error przy: public void vibrate (1000). Why?

    A to oznacza że prawdopodobnie nie znasz Javy... Więc zanim poczytasz dokumentację do Android'a, machnij sobie jakiś tutorial do Javy.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Witam. Naprawiłem już wszystkie błędy, lecz nie mogę zrobić wibracji. Prosze o pomoc

    P.s Dlaczego w emulatorze nic się mi nie wyświetla tylko napis A N D R O I D ?

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Ostatnio przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.

    x