2016-09-23 75 views
0

我的Android应用程序出现了一些问题。这是一个应用程序来确定使用加速度计的手的稳定性。我有两个活动,Vert.java和Calcu.java。在Vert.java中有一个包含25个png文件的动画功能。它还具有检索x,y和z轴加速度值的功能。将合并后的值传递给Calcu.java,其中使用if循环给出特定值范围的分数。但是,运行“Calcu”活动时会再次出现。我是android新手。请帮忙。活动堆叠在现有活动上

这是我的代码..

Vert.java

import java.util.Timer; 
import java.util.TimerTask; 



import android.app.Activity; 
import android.content.Intent; 

import android.graphics.drawable.AnimationDrawable; 
import android.hardware.Sensor; 
import android.hardware.SensorEvent; 
import android.hardware.SensorEventListener; 
import android.hardware.SensorManager; 
import android.os.Bundle; 
import android.os.Handler; 
import android.view.Window; 
import android.view.WindowManager; 

import android.widget.ImageView; 

public class Vert extends Activity implements SensorEventListener{ 
    Sensor accelerometer1; 
    SensorManager sm1; 
    float x1=0,y1=0,z1=0,tx1=0,ty1=0,tz1=0,oldx1=0,oldy1=0,oldz1=0,totalx1=0,totaly1=0,totalz1=0; 
    Intent m1; 
    int z; 
    ImageView img; 
    Timer timer; 
    Handler handler; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     overridePendingTransition(R.anim.slide_in,R.anim.slide_out); 
     setContentView(R.layout.vert); 
     sm1=(SensorManager)getSystemService(SENSOR_SERVICE); 
     accelerometer1=sm1.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 
     sm1.registerListener(this, accelerometer1,SensorManager.SENSOR_DELAY_NORMAL); 
     img=(ImageView)findViewById(R.id.ivAnim); 
     AnimationDrawable animation=new AnimationDrawable(); 
     animation.addFrame(getResources().getDrawable(R.drawable.a),200); 
     animation.addFrame(getResources().getDrawable(R.drawable.b),200); 
     animation.addFrame(getResources().getDrawable(R.drawable.c),200); 
     animation.addFrame(getResources().getDrawable(R.drawable.d),200); 
     animation.addFrame(getResources().getDrawable(R.drawable.e),200); 
     animation.addFrame(getResources().getDrawable(R.drawable.f),200); 
     animation.addFrame(getResources().getDrawable(R.drawable.g),200); 
     animation.addFrame(getResources().getDrawable(R.drawable.h),200); 
     animation.addFrame(getResources().getDrawable(R.drawable.i),200); 
     animation.addFrame(getResources().getDrawable(R.drawable.j),200); 
     animation.addFrame(getResources().getDrawable(R.drawable.k),200); 
     animation.addFrame(getResources().getDrawable(R.drawable.l),200); 
     animation.addFrame(getResources().getDrawable(R.drawable.m),200); 
     animation.addFrame(getResources().getDrawable(R.drawable.n),200); 
     animation.addFrame(getResources().getDrawable(R.drawable.o),200); 
     animation.addFrame(getResources().getDrawable(R.drawable.p),200); 
     animation.addFrame(getResources().getDrawable(R.drawable.q),200); 
     animation.addFrame(getResources().getDrawable(R.drawable.r),200); 
     animation.addFrame(getResources().getDrawable(R.drawable.s),200); 
     animation.addFrame(getResources().getDrawable(R.drawable.t),200); 
     animation.addFrame(getResources().getDrawable(R.drawable.u),200); 
     animation.addFrame(getResources().getDrawable(R.drawable.v),200); 
     animation.addFrame(getResources().getDrawable(R.drawable.w),200); 
     animation.addFrame(getResources().getDrawable(R.drawable.x),200); 
     animation.addFrame(getResources().getDrawable(R.drawable.y),200); 
    animation.setOneShot(false); 
    img.setImageDrawable(animation); 
    animation.start(); 
    } 
    @Override 
    public void onSensorChanged(SensorEvent event) { 
     // TODO Auto-generated method stub 
     x1=event.values[0]; 
     y1=event.values[1]; 
     z1=event.values[2]; 

     timer=new Timer(); 
     timer.scheduleAtFixedRate(new TimerTask(){ 

      @Override 
      public void run() { 
       // TODO Auto-generated method stub 

       oldx1=x1; 
       oldy1=y1; 
       oldz1=z1; 

          } 

     }, 200, 200); 

     String str=String.valueOf(tx1); 
     m1=new Intent(Vert.this,Calcu.class); 
     m1.putExtra("score", str); 


     if(oldx1>x1){ 
      totalx1=oldx1-x1; 
     } 
     else if(x1>oldx1){ 
      totalx1=x1-oldx1; 
     } 
     if(oldy1>y1){ 
      totaly1=oldy1-y1; 
     } 
     else if(y1>oldy1){ 
      totaly1=y1-oldy1; 
     } 
     if(oldz1>z1){ 
      totalz1=oldz1-z1; 
     } 
     else if(z1>oldz1){ 
      totalz1=z1-oldz1; 
     } 
     tx1=tx1+(totalx1+totaly1+totalz1); 
     handler=new Handler(); 
     handler.postDelayed(new Runnable(){ 

      @Override 
      public void run() { 
       // TODO Auto-generated method stub 
       startActivity(Vert.this.m1); 
       m1.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
       finish(); 
     } 

     },5000); 
    } 
    @Override 
    public void onAccuracyChanged(Sensor sensor, int accuracy) { 
     // TODO Auto-generated method stub 

    } 
    @Override 
    protected void onDestroy() { 
     // TODO Auto-generated method stub 
     super.onDestroy(); 
     this.sm1.unregisterListener(this); 
     timer.cancel(); 


    } 

} 

Vert.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/vertpageplain" 
    android:padding="20dp" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/tvVertHead" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:gravity="center" 
     android:textSize="30dp" 
     android:textColor="#138808" 
     android:text="KEEP YOUR HANDS STEADY TILL THE BOTTLE GETS EMPTY..." /> 

    <ImageView 
     android:id="@+id/ivAnim" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:gravity="center" 
     android:src="@drawable/a" /> 

</LinearLayout> 

Calcu.java

import java.io.ByteArrayOutputStream; 

import android.app.Activity; 
import android.content.Intent; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.net.Uri; 
import android.os.Bundle; 
import android.provider.MediaStore; 
import android.view.View; 
import android.view.Window; 
import android.view.WindowManager; 
import android.widget.ImageButton; 
import android.widget.TextView; 

public class Calcu extends Activity{ 
    float krip1; 
    double score1; 
    String sScore; 
    TextView finalScore1; 
    ImageButton bB1,bS1,bE1; 
    Bitmap b; 
    Intent intent,chooser; 
    Uri imageUri; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     overridePendingTransition(R.anim.slide_in,R.anim.slide_out); 
     setContentView(R.layout.result); 
     String pky1 = getIntent().getStringExtra("score"); 
     krip1=Float.valueOf(pky1); 
     finalScore1=(TextView)findViewById(R.id.tvScore1); 
     bB1=(ImageButton)findViewById(R.id.bMain1); 
     bS1=(ImageButton)findViewById(R.id.bShare1); 
     bE1=(ImageButton)findViewById(R.id.bExit1); 
     bB1.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Intent n=new Intent(Calcu.this,Play.class); 
       n.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       n.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
       startActivity(n); 

      } 
     }); 
     bS1.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       if(score1==10){ 
         b=BitmapFactory.decodeResource(getResources(), R.drawable.scorea); 

        } 
        else if(score1==9.5){ 
         b=BitmapFactory.decodeResource(getResources(), R.drawable.scoreb); 
        } 
        else if(score1==9){ 
          b=BitmapFactory.decodeResource(getResources(), R.drawable.scorec); 
         } 
        else if(score1==8.5){ 
          b=BitmapFactory.decodeResource(getResources(), R.drawable.scored); 
         } 
        else if(score1==8){ 
          b=BitmapFactory.decodeResource(getResources(), R.drawable.scoree); 
         } 
        else if(score1==7.5){ 
          b=BitmapFactory.decodeResource(getResources(), R.drawable.scoref); 
         } 
        else if(score1==7){ 
          b=BitmapFactory.decodeResource(getResources(), R.drawable.scoreg); 
         } 
        else if(score1==6.5){ 
           b=BitmapFactory.decodeResource(getResources(), R.drawable.scoreg); 
          } 
        else if(score1==6){ 
           b=BitmapFactory.decodeResource(getResources(), R.drawable.scorei); 
          } 
        else if(score1==5.5){ 
           b=BitmapFactory.decodeResource(getResources(), R.drawable.scorej); 
          } 
        else if(score1==5){ 
           b=BitmapFactory.decodeResource(getResources(), R.drawable.scorek); 
          } 
        else if(score1==4.5){ 
           b=BitmapFactory.decodeResource(getResources(), R.drawable.scorel); 
          } 
        else if(score1==4){ 
            b=BitmapFactory.decodeResource(getResources(), R.drawable.scorem); 
           } 
        else if(score1==3.5){ 
            b=BitmapFactory.decodeResource(getResources(), R.drawable.scoren); 
           } 
        else if(score1==3){ 
            b=BitmapFactory.decodeResource(getResources(), R.drawable.scoreo); 
           } 
        else if(score1==2.5){ 
            b=BitmapFactory.decodeResource(getResources(), R.drawable.scorep); 
           } 
        else if(score1==2){ 
            b=BitmapFactory.decodeResource(getResources(), R.drawable.scoreq); 
           } 
        else if(score1==1.5){ 
             b=BitmapFactory.decodeResource(getResources(), R.drawable.scorer); 
            } 
        else if(score1==1){ 
             b=BitmapFactory.decodeResource(getResources(), R.drawable.scores); 
            } 
        else if(score1==0.5){ 
             b=BitmapFactory.decodeResource(getResources(), R.drawable.scoret); 
            } 
        else if(score1==0){ 
         b=BitmapFactory.decodeResource(getResources(), R.drawable.scoreu); 
        }  
       intent=new Intent(Intent.ACTION_SEND); 
        intent.setType("image/png"); 
        ByteArrayOutputStream bytes=new ByteArrayOutputStream(); 
        b.compress(Bitmap.CompressFormat.PNG, 100, bytes); 
        String path=MediaStore.Images.Media.insertImage(getContentResolver(), b, "Title", null); 
        imageUri=Uri.parse(path); 
        intent.putExtra(Intent.EXTRA_TITLE, "SOBER SCORE CHALLENGE"); 
        intent.putExtra(Intent.EXTRA_SUBJECT, "Sober score : "+score1+"What's your's?"); 
        intent.putExtra(Intent.EXTRA_STREAM, imageUri); 
        intent.putExtra(Intent.EXTRA_TEXT, "This is beta version. The final version will soon be available in play store."); 
        chooser=Intent.createChooser(intent, "Share your Sober Score..."); 
        startActivity(chooser); 
      } 
     }); 
     bE1.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Intent exit=new Intent(getApplicationContext(),MainActivity.class); 
       exit.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       exit.putExtra("EXIT", true); 
       startActivity(exit); 
      } 
     }); 
     if(krip1<90){ 
      score1=10; 

     } 
     else if(90<krip1 && krip1<100){ 
      score1=9.5; 

     } 
     else if(100<krip1 && krip1<110){ 
      score1=9; 

     } 
     else if(110<krip1 && krip1<135){ 
      score1=8.5; 

     } 
     else if(135<krip1 && krip1<150){ 
      score1=8; 

     } 
     else if(150<krip1 && krip1<160){ 
      score1=7.5; 

     } 
     else if(160<krip1 && krip1<175){ 
      score1=7; 

     } 
     else if(175<krip1 && krip1<185){ 
      score1=6.5; 

     } 
     else if(185<krip1 && krip1<195){ 
      score1=6; 

     } 
     else if(195<krip1 && krip1<210){ 
      score1=5.5; 

     } 
     else if(210<krip1 && krip1<215){ 
      score1=5; 

     } 
     else if(215<krip1 && krip1<225){ 
      score1=4.5; 

     } 
     else if(225<krip1 && krip1<245){ 
      score1=4; 

     } 
     else if(245<krip1 && krip1<265){ 
      score1=3.5; 

     } 
     else if(265<krip1 && krip1<285){ 
      score1=3; 

     } 
     else if(285<krip1 && krip1<305){ 
      score1=2.5; 

     } 
     else if(305<krip1 && krip1<335){ 
      score1=2; 

     } 
     else if(335<krip1 && krip1<365){ 
      score1=1.5; 

     } 
     else if(365<krip1 && krip1<395){ 
      score1=1; 

     } 
     else if(395<krip1 && krip1<425){ 
      score1=0.5; 

     } 

     else if(krip1>425){ 
      score1=0; 


     } 

     finalScore1.setText(""+score1+""); 
    } 
    @Override 
    protected void onPause() { 
     // TODO Auto-generated method stub 
     super.onPause(); 
     finish(); 
    } 
    @Override 
    public void onBackPressed() { 
     // TODO Auto-generated method stub 
     super.onBackPressed(); 
     Intent back=new Intent(Calcu.this,MainActivity.class); 
     back.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     back.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     startActivity(back); 
     Calcu.this.finish(); 
    } 
    @Override 
    protected void onDestroy() { 
     // TODO Auto-generated method stub 
     super.onDestroy(); 
     finish(); 
    } 


} 

为result.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/resultpageplain" 
    android:orientation="vertical" 
    > 

    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:gravity="center" 
     android:src="@drawable/sobercent" /> 

    <TextView 
     android:id="@+id/tvScore1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:gravity="center" 
     android:textSize="70dp" 
     android:textColor="#138808" 
     android:text="X" /> 
<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    > 
    <ImageButton 
     android:id="@+id/bMain1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:padding="0dp" 
     android:layout_marginTop="30dp" 
     android:layout_marginLeft="30dp" 
     android:src="@drawable/bplayagain" /> 

    <ImageButton 
     android:id="@+id/bShare1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:padding="0dp" 
     android:layout_marginTop="30dp" 
     android:layout_marginLeft="50dp" 
     android:src="@drawable/bshare" /> 

</LinearLayout> 

<ImageButton 
    android:id="@+id/bExit1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:padding="0dp" 
    android:layout_gravity="center" 
    android:gravity="center" 
    android:src="@drawable/bexit" /> 

</LinearLayout> 
+0

我不知道是谁upvoted这一点,但它无法理解,如果任何问题。 –

+0

删除这一行可能有助于m1.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 使用此m1.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); – Haroon

+0

在清单文件中添加android:launchMode =“singleTask”。 –

回答

0

替换下面的代码剪断它应该工作

 @Override 
     public void run() { 
      // TODO Auto-generated method stub 
      startActivity(Vert.this.m1); 
      m1.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); 
      finish(); 
    } 
+0

它正在工作。现在只有一个活动.. –

+0

这是伟大的干杯! – Haroon