通过服务监听手机摇晃事件,启动支付宝


import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Handler;
import android.util.Log;
import android.widget.Toast;


/**
*这是一个监听手机摇晃事件的监听器
*/

public class ShakeListener implements SensorEventListener{

    public static final String TAG = "ShakeListener";

    //摇晃需要持续1/10s
    public static final int LASTTIME = 70;

    //摇晃需要速度
    public static final int SPEED = 4000;

    private OnShakelistener listener = null;

    private long lastTime;
    private float lastX, lastY, lastZ;

    private Context cxt;
    private SensorManager manager = null;
    private Sensor sensor = null;

    public ShakeListener( Context cxt ) {
        this.cxt = cxt;
    }


    @Override
    public void onAccuracyChanged(Sensor arg0, int arg1) {
    }
    @Override
    public void onSensorChanged(SensorEvent arg0) {
        // TODO Auto-generated method stub
//      Log.e( TAG , "摇晃了" );
//      Toast.makeText( cxt , "摇晃了", Toast.LENGTH_SHORT).show();
        long curTime = System.currentTimeMillis();
        long time = curTime - lastTime;
        if( time < LASTTIME ) return;
        //时间已达到
        lastTime = curTime;
        float x = arg0.values[0],
             y = arg0.values[1],
             z = arg0.values[2];
        float deltaX = x - lastX,
              deltaY = y - lastY,
              deltaZ = z - lastZ;
        lastX = x;
        lastY = y;
        lastZ = z;
        if( Math.sqrt( deltaX*deltaX + deltaY*deltaY + deltaZ * deltaZ )
              / time * 10000 < SPEED    ) return ;

        if( listener != null ) listener.onShake();

        stop();
        new Handler().postDelayed( new Runnable() {
            @Override
            public void run() {
                start();
            }
        } , 400 );

    }

    public void start(){
        //先获取的传感器管理器,然后通过管理器获取重力传感器,管理器监听此传感器
        manager = (SensorManager) cxt.getSystemService( Context.SENSOR_SERVICE );
        if( manager != null ){
            sensor = manager.getDefaultSensor( Sensor.TYPE_ACCELEROMETER );
        }
        if( sensor != null ){
            manager.registerListener( this , sensor, SensorManager.SENSOR_DELAY_GAME );
        }
    }

    public void stop(){
        manager.unregisterListener( this );
    }

    public void setListener(OnShakelistener listener) {
        this.listener = listener;
    }

    public interface OnShakelistener{
        public void onShake();
    }

}


import com.g.s.blacklist.service.ShakeListener.OnShakelistener;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
import android.widget.Toast;


/**
*选择服务理由是服务看不见界面,通过重载的onDestory达到服务不关闭,当返回桌面式仍然可以调到支付宝
*/
public class ShakeService extends Service implements OnShakelistener{

    public static final String TAG = "shakeService";

    private ShakeListener shake;

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

    @Override
    public void onCreate() {
        shake = new ShakeListener( this );
        shake.setListener( this );
        shake.start();
        super.onCreate();
    }

    @Override
    public void onDestroy() {
        // TODO Auto-generated method stub
        startService( new Intent( this, ShakeService.class ) );
        super.onDestroy();
    }

    @Override
    public void onShake() {
        Intent intent = getPackageManager().getLaunchIntentForPackage("com.eg.android.AlipayGphone");
        if( intent != null ){
            startActivity( intent );
        }else{
            Toast.makeText( this , "尚未安装支付宝!", Toast.LENGTH_SHORT ).show();
        }
    }


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值