Würfelapps:

Eine einfache App, die unter dem Button1 in Java je nach Zufallszahl eine der sechs Würfelbilder in der ImageView unter wuerfel ausgibt, diese Datei ist als activity_main.xml nach Anlegen der App z.B. unter Eclipse in den  Ordner res mit Unterordner layout zu kopieren

 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
   android:background="#ffffaa"
    tools:context="com.example.hallomichael.MainActivity"
    tools:ignore="MergeRootFrame" >

<ImageView
    android:id="@+id/wuerfel"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/Button1"
    android:layout_marginLeft="44dp"
    android:src="@drawable/w1" />

<Button
    android:id="@+id/Button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/wuerfel"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="34dp"
    android:text="  Würfeln  " />

</RelativeLayout>

 

das dazu benötigte Java-Programm ist in den Unterordner der Quelle src in der Main.Activity.Java zu kopieren,

Achtung: Sie müssen den Dateinamen ihrer App einbinden, also wo unten com.example.wuerfelohne steht , ist ihr Appname einzusetzen

 

package com.example.wuerfelohne;

import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends Activity
{

          private int zufall;
          public Button but;
        @Override
        public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
       
            buttondruecken();
       }
    private void buttondruecken()
    {
             but=(Button)findViewById(R.id.Button1);
             but.setOnClickListener(new View.OnClickListener()
             {
                 public void onClick(View v)
                 {
                     ImageView bild=(ImageView) findViewById(R.id.wuerfel);
                     Drawable neubild=null;
                    
                     zufall=    (int) (Math.random() * (6)) + 1;
                     if(zufall==1){neubild=getResources().getDrawable(R.drawable.w1n);}
                    
                     if(zufall==2){neubild=getResources().getDrawable(R.drawable.w2n);}
                    
                     if(zufall==3){neubild=getResources().getDrawable(R.drawable.w3n);}
                    
                     if(zufall==4){neubild=getResources().getDrawable(R.drawable.w4n);}
                    
                     if(zufall==5){neubild=getResources().getDrawable(R.drawable.w5n);}
                    
                     if(zufall==6){neubild=getResources().getDrawable(R.drawable.w6n);}
                    
                    
                     bild.setImageDrawable(neubild);
                 }
             });
    }
}
   
   
   
  



die Bilder w1n.png  bis w6n.png  sind in dem Ordner drawable-mdpi abzuspeichern

 

Das ganze nocheinmal  zum Schütteln, also ohne Button1, zuerst die activity_main.xml  (z.B. Hintergrundfarbe ffffaa, also volles rot ( ff ), volles grün ( ff ) und aa- Anteil blau , die Wertigkeit geht von 0,1,2,3,4,5,6,7,8,9,a,b,c,d,f)

 

 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
   android:background="#ffffaa"
 
    tools:ignore="MergeRootFrame" >
   
    <EditText
        android:id="@+id/EditTextZahl"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Würfeln durch Schütteln" >

    </EditText>

<ImageView
    android:id="@+id/wuerfel"
    android:layout_width="265dp"
    android:layout_height="379dp"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:src="@drawable/ww1" />

</RelativeLayout>
 

 

das dazu benötigte Java-Programm ist in den Unterordner der Quelle src in der Main.Activity.Java zu kopieren,

Achtung: Sie müssen den Dateinamen ihrer App einbinden, also wo unten com.example.wuerfelshake steht , ist ihr Appname einzusetzen (zusätzlich gibt es ein Würfelgeräusch unter dem Ordner raw als klack.mp3 abgespeichert, ggf. lassen sie die Soundbereiche einfach weg)

 

package com.example.wuerfelshake;


import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.widget.ImageView;



public class MainActivity extends Activity


      MediaPlayer but_sound;
      public SensorManager mgr; 
      public  float max;
      public int zufall;
   

    @Override 
      public void onCreate(Bundle savedInstanceState)
       { 
           super.onCreate(savedInstanceState); 
           setContentView(R.layout.activity_main);
       
     
        max=0;
       
        mgr = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 
        mgr.registerListener(listener, mgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL); 
      } 
 
    @Override 
    public void onDestroy()
       { 
        super.onDestroy(); 
        mgr.unregisterListener(listener); 
       } 
 

private SensorEventListener listener=new SensorEventListener()
    {
       @Override
         public void onSensorChanged(SensorEvent event)
        {
             if(event.sensor.getType()==Sensor.TYPE_ACCELEROMETER)
            {
                float x,y,z;
                x=event.values[0];
              
             
                    if(x>max)
                       { max=x; }
              
                  
                         ImageView bild=(ImageView) findViewById(R.id.wuerfel);
                         Drawable neubild=null;
         if(max>19){
                         but_sound=MediaPlayer.create(MainActivity.this, R.raw.klack);
                        but_sound.start();
                
            
                         zufall=    (int) (Math.random() * (6)) + 1;
                        
                         if(zufall==1){neubild=getResources().getDrawable(R.drawable.w1n);}
                        
                         if(zufall==2){neubild=getResources().getDrawable(R.drawable.w2n);}
                        
                         if(zufall==3){neubild=getResources().getDrawable(R.drawable.w3n);}
                        
                         if(zufall==4){neubild=getResources().getDrawable(R.drawable.w4n);}
                        
                         if(zufall==5){neubild=getResources().getDrawable(R.drawable.w5n);}
                        
                         if(zufall==6){neubild=getResources().getDrawable(R.drawable.w6n);}
                        
                         max=1;
                        
                         bild.setImageDrawable(neubild);
                     }
                
        }
            
           }
     
   
     @Override
   public void onAccuracyChanged(Sensor sensor,int accuracy)
       {}

  };
}
       

Ich habe hier die Handyrichtung x belegt und mit x>19 eingestellt, abhängig von dem Zahlenwert läßt sich die Empfindlichkeit des Schüttelanschlages einstellen, die Variablen y und z werden mitgeliefert, das führte zu einer anderen App mit der je nach Schüttelrichtung ein anderes Geräusch abgespielt wurde, ideal für ein kleines Schüttelmusikstück.


             

Würfelapp die  jede Zahlausgabe mit  einem anderen Sound ausgibt

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
   android:background="#ffffaa"
 
    tools:ignore="MergeRootFrame" >

<ImageView
    android:id="@+id/wuerfel"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/Button1"
    android:layout_marginLeft="44dp"
    android:src="@drawable/w1" />

<Button
    android:id="@+id/Button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/wuerfel"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="34dp"
    android:text="  Würfeln  " />

</RelativeLayout>

das dazu benötigte Java-Programm ist in den Unterordner der Quelle src in der Main.Activity.Java zu kopieren,

Achtung: Sie müssen den Dateinamen ihrer App einbinden, also wo unten com.example.wuerfelsound steht , ist ihr Appname einzusetzen

 

package com.example.wuerfelsound;

import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.media.MediaPlayer;

public class MainActivity extends Activity {

       MediaPlayer but_sound;
       private int zufall;
       public Button but;
      
      
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
  buttondruecken();
 
}
    private void buttondruecken()
    {
           but=(Button)findViewById(R.id.Button1);
             but.setOnClickListener(new View.OnClickListener()
             {
                 public void onClick(View v)
                 {
                     ImageView bild=(ImageView) findViewById(R.id.wuerfel);
                     Drawable neubild=null;
                    
                    
                     zufall=    (int) (Math.random() * (6)) + 1;
                     if(zufall==1){  
                                     neubild=getResources().getDrawable(R.drawable.w1n);
                                     but_sound=MediaPlayer.create(MainActivity.this, R.raw.sound2);
                                      but_sound.start();
                                  }
                    
                     if(zufall==2){
                                       neubild=getResources().getDrawable(R.drawable.w2n);
                                       but_sound=MediaPlayer.create(MainActivity.this, R.raw.sound3);
                                      but_sound.start();
                                  }
                    
                     if(zufall==3){
                                    neubild=getResources().getDrawable(R.drawable.w3n);
                                    but_sound=MediaPlayer.create(MainActivity.this, R.raw.sound4);
                                     but_sound.start();
                                  }
                           
                     if(zufall==4){neubild=getResources().getDrawable(R.drawable.w4n);}
                    
                     if(zufall==5){neubild=getResources().getDrawable(R.drawable.w5n);}
                    
                     if(zufall==6){neubild=getResources().getDrawable(R.drawable.w6n);}
                    
                    
                     bild.setImageDrawable(neubild);
                 }
             });
    }}
   
   
    Die Zahlen 4,5, und 6 sind noch nicht mit Sounddateien belegt, aber das Prinzip ist wohl nachvollziehbar.

 

Würfeln mit Videoausgabe: diese Datei ist als activity_main.xml nach Anlegen der App z.B. unter Eclipse in den  Ordner res mit Unterordner layout zu kopieren

 

 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
   android:background="#ffffaa"
 
    tools:ignore="MergeRootFrame" >

    <VideoView
        android:id="@+id/video1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="237dp" />

</RelativeLayout>

 

 

 ein elektrisches Spielzeug, das mit einer Kamera bei seinen Würfelbewegungen aufgenommen wurde und zu jeweils einer Zahl zur Anwendung kam (-mp4 )

das dazu benötigte Java-Programm ist in den Unterordner der Quelle src in der Main.Activity.Java zu kopieren,

Achtung: Sie müssen den Dateinamen ihrer App einbinden, also wo unten com.example.wuerfelvideo steht , ist ihr Appname einzusetzen

package com.example.wuerfelvideo;

import android.app.Activity;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.net.Uri;
import android.widget.VideoView;


public class MainActivity extends Activity


      MediaPlayer but_sound;
      public SensorManager mgr; 
      public  float max;
      public int zufall;
      private VideoView vid1,vid2,vid3,vid4,vid5,vid6;


    @Override 
      public void onCreate(Bundle savedInstanceState)
       { 
           super.onCreate(savedInstanceState); 
           setContentView(R.layout.activity_main);                 
          
        max=0;
       
        mgr = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 
        mgr.registerListener(listener, mgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL); 
      } 
 
    @Override 
    public void onDestroy()
       { 
        super.onDestroy(); 
        mgr.unregisterListener(listener); 
       } 
  

private SensorEventListener listener=new SensorEventListener()
    {
       @Override
         public void onSensorChanged(SensorEvent event)
        {
             if(event.sensor.getType()==Sensor.TYPE_ACCELEROMETER)
            {
                float x,y,z;
                x=event.values[0];
              
             
                    if(x>max)
                       { max=x; }
                                    
                        
         if(max>19){
                       
                         zufall=    (int) (Math.random() * (6)) + 1;
                        
                         if(zufall==1){
                              vid1= (VideoView) findViewById(R.id.video1);
                              vid1.setVideoURI(Uri.parse("android.resource://" + getPackageName() +"/"+R.raw.wv1));
                              vid1.start(); vid1.requestFocus();}
                        
                        
                         if(zufall==2){
                             vid2= (VideoView) findViewById(R.id.video1);
                             vid2.setVideoURI(Uri.parse("android.resource://" + getPackageName() +"/"+R.raw.wv2));
                             vid2.start(); vid2.requestFocus();}
                                                
                         if(zufall==3){                 
                              vid3= (VideoView) findViewById(R.id.video1);
                              vid3.setVideoURI(Uri.parse("android.resource://" + getPackageName() +"/"+R.raw.wv3));           
                             vid3.start(); vid3.requestFocus();}
                                                    
                         if(zufall==4){
                             vid4= (VideoView) findViewById(R.id.video1);
                              vid4.setVideoURI(Uri.parse("android.resource://" + getPackageName() +"/"+R.raw.wv4));
                              vid4.start(); vid4.requestFocus();}
                                             
                         if(zufall==5){
                              vid5= (VideoView) findViewById(R.id.video1);
                              vid5.setVideoURI(Uri.parse("android.resource://" + getPackageName() +"/"+R.raw.wv5));
                             vid5.start(); vid5.requestFocus();}
                                             
                         if(zufall==6){
                              vid6= (VideoView) findViewById(R.id.video1);
                              vid6.setVideoURI(Uri.parse("android.resource://" + getPackageName() +"/"+R.raw.wv6));
                               vid6.start(); vid6.requestFocus();}
                        
                        
                         max=1;
                        
                    
                     }}}
                
     
     @Override
   public void onAccuracyChanged(Sensor sensor,int accuracy)
       {}

  };
}
       
             
             
       
    die Videodateien sind als mp4 -Dateien in dem Unterordner R.raw abgespeichert