傳感器

1.實(shí)現(xiàn)SensorEventListener接口

public class MainActivity extends AppCompatActivity implements SensorEventListener{
}

2.activity中執(zhí)行

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        //獲取對象
        manager = (SensorManager) getSystemService(SENSOR_SERVICE);
        List<Sensor> sensorList = manager.getSensorList(Sensor.TYPE_ALL);
        //log中打印所有傳感器
        for (int i = 0; i < sensorList.size(); i++) {
            Sensor sensor = sensorList.get(i);
            Log.e(TAG, "onCreate: " + sensor.getName());
        }
    }

    @Override
    protected void onStop() {
        super.onStop();
        //取消注冊
        manager.unregisterListener(this);
    }

    @Override
    protected void onStart() {
        super.onStart();
        //  在start中注冊傳感器
        //加速度傳感器
        manager.registerListener(this, manager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
                SensorManager.SENSOR_DELAY_NORMAL);
        //光感傳感器
        manager.registerListener(this, manager.getDefaultSensor(Sensor.TYPE_LIGHT),
                SensorManager.SENSOR_DELAY_NORMAL);
        //方向傳感器
        manager.registerListener(this, manager.getDefaultSensor(Sensor.TYPE_ORIENTATION),
                SensorManager.SENSOR_DELAY_NORMAL);

    }

    @Override
    public void onSensorChanged(SensorEvent event) {
        Sensor sensor = event.sensor;
        if (sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
            float x = event.values[0];
            float y = event.values[1];
            float z = event.values[2];
            txt_x1.setText("x軸加速度" + x);
            txt_y1.setText("y軸加速度" + y);
            txt_z1.setText("z軸加速度" + z);
            //搖一搖如果滿足產(chǎn)生震動
            if (Math.abs(x) > 15 || Math.abs(y) > 15 || Math.abs(z) > 15) {
                share();
            }
        } else if (sensor.getType() == Sensor.TYPE_LIGHT) {
            float value = event.values[0];
            light.setText("光線強(qiáng)度:"+value);
        } else if (sensor.getType() == Sensor.TYPE_ORIENTATION) {
            float z = event.values[0];
            float x = event.values[1];
            float y = event.values[2];
            txt_z2.setText("繞z軸轉(zhuǎn)過的角度:"+z);
            txt_y2.setText("繞x軸轉(zhuǎn)過的角度:"+y);
            txt_x2.setText("繞y軸轉(zhuǎn)過的角度:"+x);
        }

    private void share() {
        //帶有聲音
        MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.weichat_audio);
        mediaPlayer.start();

        vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
        //設(shè)置循環(huán)奇數(shù)為震動時間
        long[] patter = {1000, 2000, 2000, 1000};
        不為-1時一直震動
        vibrator.vibrate(patter, -1);
    }

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

    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • refs: https://developer.android.google.cn/guide/topics/se...
    richy_閱讀 42,877評論 5 31
  • android傳感器的種類 Sensor framework 使用Android的sensor framework...
    MrMagicWang閱讀 2,159評論 0 4
  • 最近在搞一個自己的App,突發(fā)一個想法,給App加一個搖一搖隨機(jī)查看圖片的功能,這樣可以使得用戶在使用App的時候...
    _SOLID閱讀 19,537評論 1 31
  • 傳感器的定義: 一種物理設(shè)備或者生物器官,能夠探測、感受外界的信號,物理條件(如光,熱, 適度)或化學(xué)組成(如煙霧...
    timber_wu閱讀 364評論 0 1
  • 一襲白紙如獲珍,蘸墨下筆無彧意,突至一人上頭心,梅花遙遙綴,粉黛隱隱現(xiàn)。罷,得停筆,于此人血潮過洶涌,嘆,再磨硯,...
    山屈生閱讀 1,021評論 8 4

友情鏈接更多精彩內(nèi)容