Androidはどのように携帯電話の振動を実現します


一、Androidの振動実現--Vibrator類は開発過程で振動を実現する必要がある.ネット上にはいくつかの例があるが、ここでは述べず、codeに直接行く.
  • は必ずAndroidManifestにいます.xmlは権限を追加します.
  • <uses-permission android:name="android.permission.VIBRATE" />
    
  • Vibratorインスタンスを取得する.
  • vibrator = (Vibrator) VibrateActivity.this.getSystemService(VibrateActivity.VIBRATOR_SERVICE);
    

    3)使用する関連方法:
    //                       ,                   
            //vibrator.vibrate(1000);
    
            /*             ,   a[0]       ,a[1]         ,     a[2]       ,
             * a[3]         ……      ,               
             */
            long[] patter = {1000, 1000, 2000, 50};
            vibrator.vibrate(patter, 0);
    

    4)振動を閉じる:
    vibrator.cancel();
    

    --------------------------------------------------------------------------------------------------1)Vibratorオブジェクトの取得:
    private static final AudioAttributes STATUS_BAR_VIBRATION_ATTRIBUTES =
                new AudioAttributes.Builder()
                        .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
                        .setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION)
                        .build();
                        
    mVibrator = getApplicationContext().getSystemService(Vibrator.class);
    

    2.反射方式で振動を実現する:
    //      effectId (0 1) fallback(true fasle)true,    ;
    public void vibrate(final int effectId, final boolean fallback) {
            try {
                //  Clase  ,        new Class[]{             get(int a,boolean b)}
                className = Class.forName("android.os.VibrationEffect");
                methodName = className.getDeclaredMethod("get", new Class[]{int.class, boolean.class});
    
                //cl.invoke(null, 0,false)     (  1   ,  2 int,  3 boolean);
                mVibrator.vibrate((VibrationEffect) methodName.invoke(className, effectId, fallback),
                        STATUS_BAR_VIBRATION_ATTRIBUTES);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    

    詳細コードリンクをダウンロード:https://download.csdn.net/download/xiao_yuanjl/12273091