2016-03-28 23 views
0

Merhaba, benim uygulamada bir etkinlik olarak this (ana aktivitem) etkinliğini uygulamaya çalışıyordum. Bu, MainPage java sınıfından bir düğmeye basılarak başlatılabilir, ancak her biri çökme işlemini başlatmak için düğmeye bastığımda, ivme verilerini kullanmak için izin istemekle ilgili bir şey olabileceğini düşünüyorum, ancak emin değilim.Uygulama yeni aktivitenin başlangıcında çöküyor (Accelerometer verilerini kullanıyor)

package shake.shake; 

/** 
* Created by ink on 3/24/16. 
*/ 
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.os.Bundle; 
import android.view.View; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class main extends Activity implements SensorEventListener { 
    private float mLastX, mLastY, mLastZ; 
    private boolean mInitialized; 
    private SensorManager mSensorManager; 
    private Sensor mAccelerometer; 
    private final float NOISE = (float) 2.0; 
    /** Called when the activity is first created. */ 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     mInitialized = false; 
     mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 
     mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 
     mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL); 
    } 
    protected void onResume() { 
     super.onResume(); 
     mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL); 
    } 
    protected void onPause() { 
     super.onPause(); 
     mSensorManager.unregisterListener(this); 
    } 

    @Override 
    public void onAccuracyChanged(Sensor sensor, int accuracy) { 
// can be safely ignored for this demo 
    } 

    @Override 
    public void onSensorChanged(SensorEvent event) { 
     TextView tvX= (TextView)findViewById(R.id.x_axis); 
     TextView tvY= (TextView)findViewById(R.id.y_axis); 
     TextView tvZ= (TextView)findViewById(R.id.z_axis); 
     ImageView iv = (ImageView)findViewById(R.id.image); 
     float x = event.values[0]; 
     float y = event.values[1]; 
     float z = event.values[2]; 
     if (!mInitialized) { 
      mLastX = x; 
      mLastY = y; 
      mLastZ = z; 
      tvX.setText("0.0"); 
      tvY.setText("0.0"); 
      tvZ.setText("0.0"); 
      mInitialized = true; 
     } 
     else { 
      float deltaX = Math.abs(mLastX - x); 
      float deltaY = Math.abs(mLastY - y); 
      float deltaZ = Math.abs(mLastZ - z); 
      if (deltaX < NOISE) deltaX = (float)0.0; 
      if (deltaY < NOISE) deltaY = (float)0.0; 
      if (deltaZ < NOISE) deltaZ = (float)0.0; 
      mLastX = x; 
      mLastY = y; 
      mLastZ = z; 
      tvX.setText(Float.toString(deltaX)); 
      tvY.setText(Float.toString(deltaY)); 
      tvZ.setText(Float.toString(deltaZ)); 
      iv.setVisibility(View.VISIBLE); 
      if (deltaX > deltaY) { 
       iv.setImageResource(R.drawable.horizontal); 
      } else if (deltaY > deltaX) { 
       iv.setImageResource(R.drawable.vertical); 
      } else { 
       iv.setVisibility(View.INVISIBLE); 
      } 
     } 
    } 
} 

: Burada

package shake.shake; 

import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.ImageButton; 

public class MainPage extends AppCompatActivity { 
    private static Button ShakeButton1; 
    private static ImageButton SettingsButton1; 
    private static ImageButton HistoryButton1; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main_page); 
     OnClickButtonListener(); 
    } 
    public void OnClickButtonListener() 
    { 
     ShakeButton1 = (Button)findViewById(R.id.ShakeButton); 
     ShakeButton1.setOnClickListener(
       new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         Intent intentSecondActivity = new Intent(MainPage.this, main.class); 
         startActivity(intentSecondActivity); 
          } 
       }); 
     SettingsButton1 = (ImageButton)findViewById(R.id.SettingsButton); 
     SettingsButton1.setOnClickListener(
       new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         Intent intentSecondActivity = new Intent(MainPage.this, Settingspage.class); 
         startActivity(intentSecondActivity); 
        } 
       }); 
     HistoryButton1 = (ImageButton)findViewById(R.id.HistoryButton); 
     HistoryButton1.setOnClickListener(
       new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         Intent intentSecondActivity = new Intent(MainPage.this, Historypage.class); 
         startActivity(intentSecondActivity); 
        } 
       }); 
}} 

app çöküyor aktivite bulunuyor: herhangi bir yardım burada

için

Teşekkür fırlatılır ile ben sorun yaşıyorum etkinlik hangi MainPage var Ayrıca buradaki bildirim:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="shake.shake"> 
    <uses-feature android:name="android.hardware.sensor.accelerometer" android:required="true" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity android:name=".MainPage"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".Settingspage" 
      android:label="@string/title_activity_settingspage" /> 
     <activity 
      android:name=".Historypage" 
      android:label="@string/title_activity_historypage" 
      android:theme="@style/AppTheme.NoActionBar"></activity> 
    </application> 

</manifest> 

ve burada crashlog var:

03-27 21:55:40.742 19759-19759/shake.shake E/AndroidRuntime: FATAL EXCEPTION: main 
 
                  Process: shake.shake, PID: 19759 
 
                  android.content.ActivityNotFoundException: Unable to find explicit activity class {shake.shake/shake.shake.main}; have you declared this activity in your AndroidManifest.xml? 
 
                   at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1794) 
 
                   at android.app.Instrumentation.execStartActivity(Instrumentation.java:1512) 
 
                   at android.app.Activity.startActivityForResult(Activity.java:3930) 
 
                   at android.app.Activity.startActivityForResult(Activity.java:3890) 
 
                   at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:843) 
 
                   at android.app.Activity.startActivity(Activity.java:4213) 
 
                   at android.app.Activity.startActivity(Activity.java:4181) 
 
                   at shake.shake.MainPage$1.onClick(MainPage.java:29) 
 
                   at android.view.View.performClick(View.java:5204) 
 
                   at android.view.View$PerformClick.run(View.java:21155) 
 
                   at android.os.Handler.handleCallback(Handler.java:739) 
 
                   at android.os.Handler.dispatchMessage(Handler.java:95) 
 
                   at android.os.Looper.loop(Looper.java:148) 
 
                   at android.app.ActivityThread.main(ActivityThread.java:5422) 
 
                   at java.lang.reflect.Method.invoke(Native Method) 
 
                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
 
                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

+0

Eğer 'ekledin "ana" sınıfı hakkında tezahür ekleyin ' manifest için, kesinlikle bu gerekli değil ama son zamanlarda neler değiştiğine aşina değilim? –

+1

Logcat'ınızı gönderin –

+0

Kodunuzu kaynak kodla karşılaştırdınız mı (sağladığınız linkte mevcut)? Ayrıca, bu belirli sensöre erişmek için özel izin almanıza gerek yoktur. –

cevap

1

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="shake.shake"> 
    <uses-feature android:name="android.hardware.sensor.accelerometer" android:required="true" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity android:name=".MainPage"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".main" /> 
     <activity 
      android:name=".Settingspage" 
      android:label="@string/title_activity_settingspage" /> 
     <activity 
      android:name=".Historypage" 
      android:label="@string/title_activity_historypage" 
      android:theme="@style/AppTheme.NoActionBar"></activity> 
    </application> 

</manifest> 
İlgili konular