序文
WeChatが人気があったとき、私がまだそれに使用されることができるとき、私は夜中に電話を持っていました。当時、私はそれに頼ってシェンマを揺さぶることでした。高すぎる。多くの場合、私は最近、プロジェクトの振動の問題を解決する必要があります。
原理
関数を揺さぶることの基本原則は、携帯電話の加速度センサーを使用して、携帯電話の振動やUIの変化などの特定の値にアクセルが到達したときに特定の値に達することです。ここでこの機能を実装するには、まず第一に、Androidセンサーの使用を理解する必要があります。
Androidセンサーセンサーの使用
Androidには、Android SDKでサポートされているセンサーには、アクセラレーションセンサー、ジャイロスコープセンサー、重力センサー、磁場センサー、圧力センサーなどがあります。ただし、センサーにはお金が必要なため、すべての携帯電話がこれらのセンサーを持っているわけではないため、安価な携帯電話は一般的に使用されるセンサーを追加して追加し、基本的にはほとんどのセンサーを備えています。
センサーの使用手順
Androidセンサーの使用手順は、ほぼ3つのステップに分割できます。
1.センサー管理サービスオブジェクトSensormanagerを取得します。
2。android.hardware.sensoreventlistenerインターフェイスを実装する必要があるセンサーイベント監視クラスを作成します。
3. sensormanager.registerListenerメソッドを使用して、指定されたセンサーを登録します。
センサーイベントインターフェイス
SensoreVentListenerインターフェイス、OnSensOrchanged()およびonaccuracyChanged()のインターフェイス()の対応するセンサーイベントを処理します。
パブリックインターフェイスSensoreventListener { /** *センサー値が変更されたときに呼び出されます} Interungの一部であり、@link android.sensorevent}を再利用することができますp> {@link android.sensormanager sensormanager} * * *このセンサーのアカウント */ public void onaccuracychanged(センサーセンサー、int精度);}
Android振動実装
Androidの振動効果は、主にバイブレーターサービスに依存しています。
Android.App.App.App.Serviceをインポート。 Vibrator_service) ?1);}}
同時に、AndroidManifest.xmlに振動許可を追加する必要があります。
<outes-permission android:name = "android.permission.vibrate"/>
振動法のパラメーターを説明してください。
1.長いミリ秒:振動の長さ、ユニットはミリ秒です。
2。長い[]パターン:カスタム振動モード。配列内の数値の意味は[静的期間、振動時間、静的時間、振動時間など]です。振動時間のあるユニットはミリ秒です。
3.繰り返し:振動を繰り返すかどうか、1が繰り返され、-1は1回だけ振動します。
振動デモの実現を振る
さて、アクセルセンサーを使用してアクセラレーションセンサーを使用する必要があることを理解する必要があります。 MainActivityクラスは次のように実装されます。
Android.App.AlertDialog.Droid.Content.DialogInter.OnclickListener; hardware.hardware.sroid.os.log.widget.toast; Private Boolean IsResh = @OverRideは、shakeListener()を保護します。 int){isrefresh = false; cancel();}}。 ").create();}} @Override Protected void onresume(){sensormanager.registerListener(shakelistener、sensormanager.getdefaultsor(sensor.type_acceleromer)、s ensonager.sensor_delay_fastest); @.onresume(); onpause(){//刑務所をキャンセルし、刑務所を聴きますonsensorchnted(sensorevent){// E (isrefresh){return;} float []] values = values;一般に、これらの3つの方向の重力加速度は20に達し、シャフトの軸の方向に重力状態に達します。軸の軸の方向の重力加速*/ float x = flow y = math.abs(value [1]; [2]); > = accelerate_value || = accelate_value){toast.makeText.this " +(x> = accelerate_value?x:y> = z y:z)、toast.length_short) ()vibratorhelper.vibrate(300)
効果マップ: