2014-03-31 82 views

回答

0

在您的活動中的onCreate方法中啓動服務。

startService(new Intent(this, CDTservice.class)); 

不要忘記在清單文件中註冊該服務。

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

下面是服務類:

package com.example.sensorsample; 

import java.util.List; 

import android.app.Activity; 
import android.app.ActivityManager; 
import android.app.KeyguardManager; 
import android.app.Service; 
import android.app.KeyguardManager.KeyguardLock; 
import android.content.BroadcastReceiver; 
import android.content.ComponentName; 
import android.content.Context; 
import android.content.Intent; 
import android.content.IntentFilter; 
import android.os.IBinder; 
import android.os.PowerManager; 
import android.os.PowerManager.WakeLock; 
import android.util.Log; 
import android.view.WindowManager; 
import android.widget.Toast; 

public class CDTservice extends Service { 
    ScreenBroadcastReceiver m_receiver; 
    public String activityname; 
    PowerManager pm; 
    WakeLock wl; 

    @Override 
    public void onCreate() { 
     IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON); 
     filter.addAction(Intent.ACTION_SCREEN_OFF); 
     m_receiver = new ScreenBroadcastReceiver(); 
     registerReceiver(m_receiver, filter); 
     Log.d("Widgettool", "works"); 
    } 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 

     start(); 
     Toast.makeText(getBaseContext(), "SERVICE ON", Toast.LENGTH_SHORT) 
       .show(); 

     return START_STICKY; 
    } 

    @Override 
    public void onDestroy() { 
     stop(); 
     super.onDestroy(); 
     unregisterReceiver(m_receiver); 
     wl.release(); 

    } 

    @SuppressWarnings("deprecation") 
    public void start() { 
     try { 
      pm = (PowerManager) getApplicationContext().getSystemService(
        Context.POWER_SERVICE); 
      wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK 
        | PowerManager.ACQUIRE_CAUSES_WAKEUP, getClass().getName()); 
      wl.acquire(); 
       KeyguardManager mgr = (KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE); 
      KeyguardLock lock = mgr.newKeyguardLock(KEYGUARD_SERVICE); 
      lock.disableKeyguard(); 
      //new SensorActivity().service(); 

     } catch (Exception e) { 

     } 
    } 

    public void stop() { 

     ActivityManager am = (ActivityManager) this 
       .getSystemService(ACTIVITY_SERVICE); 
     List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1); 
     Log.d("topActivity", "CURRENT Activity ::" 
       + taskInfo.get(0).topActivity.getClassName()); 
     activityname = taskInfo.get(0).topActivity.getClassName(); 
     ComponentName componentInfo = taskInfo.get(0).topActivity; 
     componentInfo.getPackageName(); 

    } 

    private class ScreenBroadcastReceiver extends BroadcastReceiver { 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { 
       Log.d("ON SCREEN ON", "might hang here"); 
       // start(); 
       // stop(); 

      } else if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { 
       start(); 
       Log.d("SCREEN OFF", "might hang here"); 
       // stop(); 

      } 
     } 

    } 

    @Override 
    public IBinder onBind(Intent intent) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

} 
+0

我已經嘗試過你的源代碼,但它不工作...我想要的是我的應用程序打開時,屏幕解鎖,或清醒 – mighty