2013-08-07 91 views
0

我如何開始在Accelererometer(在晃動)新的活動:當我動搖我的手機應用程序崩潰 - 加速度運行也後臺開始新的活動On Sensor Changed?

public class Shaker_Service extends Service implements SensorEventListener{ 
    private static final String TAG = "MyService"; 
    private SensorManager sensorManager; 



AppPreferences appPrefs; 

    @Override 
    public IBinder onBind(Intent intent) { 
     return null; 
    } 

    @Override 
    public void onCreate() { 
     Toast.makeText(this, "My Service CREATED", Toast.LENGTH_LONG).show(); 
     Log.d(TAG, "onCreate"); 

    } 

    @Override 
    public void onDestroy() { 
     Toast.makeText(this, "My Service STOP", Toast.LENGTH_LONG).show(); 
     Log.d(TAG, "onDestroy");  
    } 

    @Override 
    public void onStart(Intent intent, int startid) { 

     Toast.makeText(this, "My Service START", Toast.LENGTH_LONG).show(); 
     Log.d(TAG, "onStart"); 

     sensorManager=(SensorManager)getSystemService(SENSOR_SERVICE); 
     // add listener. The listener will be HelloAndroid (this) class 
     sensorManager.registerListener(this, 
       sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), 
       SensorManager.SENSOR_DELAY_NORMAL); 

    } 



    @Override 
    public void onAccuracyChanged(Sensor sensor, int accuracy) { 

    } 

    @Override 
    public void onSensorChanged(SensorEvent event) { 
     // check sensor type 
       if(event.sensor.getType()==Sensor.TYPE_ACCELEROMETER){ 

        // assign directions 
        float x=event.values[0]; 
        float y=event.values[1]; 
        float z=event.values[2]; 

        if (x>10){ 

startActivity(newIntent("com.examles.MESSAGE")); 


        } 
       } 

     } 
} 

清單:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.examples" 
     android:versionCode="1" 
     android:versionName="1.0"> 

     <activity android:name=".Message_Note" 
       android:label="@string/app_name" 
        > 
      <intent-filter> 
       <action android:name="com.examples.MESSAGE" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 

<service android:enabled="true" android:name=".Shaker_Service" /> 
    </application> 

</manifest> 

Message_Note.java :

公共類Message_Note延伸活動{

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.message); 
} 

}誤差(logcat的)的

圖像0​​https://mega.co.nz/#!SUpTAbAC!WC9y_Xlh5GEW9AY9_5WbpXwkYA4Xk-o9WgaXvN6jpLk

+0

我認爲應用程序崩潰是因爲您不使用上下文來啓動新的活動。我建議你看看LogCat並在這裏發佈錯誤描述。 – 2013-08-07 11:36:55

+0

我想用同樣的方法,一些應用程序用來知道手機是否已被移動,並通過開始另一個活動 – NPLS

回答

1

嘗試使用:

Intent intent = new Intent(this, theActivityYouWantToStart.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 


這是從服務內啓動一個活動的正確方式。

+0

無法正常工作,它崩潰 – NPLS

+0

是的,我忘記了正確的語法,是新的意圖(上下文,類)立即編輯答案 –

+0

仍然不工作:( – NPLS