日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

传感器的使用,高仿微信摇一摇,动画加声音

發布時間:2023/12/14 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 传感器的使用,高仿微信摇一摇,动画加声音 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

很多時候我們的應用需要使用傳感器,使手機應用更加方便和可玩性更高, Google為我們提供了十一種傳感器

#define SENSOR_TYPE_ACCELEROMETER 1 //加速度#define SENSOR_TYPE_MAGNETIC_FIELD 2 //磁力#define SENSOR_TYPE_ORIENTATION 3 //方向#define SENSOR_TYPE_GYROSCOPE 4 //陀螺儀#define SENSOR_TYPE_LIGHT 5 //光線感應#define SENSOR_TYPE_PRESSURE 6 //壓力#define SENSOR_TYPE_TEMPERATURE 7 //溫度#define SENSOR_TYPE_PROXIMITY 8 //接近#define SENSOR_TYPE_GRAVITY 9 //重力#define SENSOR_TYPE_LINEAR_ACCELERATION 10//線性加速度#define SENSOR_TYPE_ROTATION_VECTOR 11//旋轉矢量

今天我們就實現微信中的搖一搖功能,分析一波,首先是直觀的感受是,搖一搖的時候,手機振動了,其次是有動畫效果,當然也少不了聲音的效果。

xml布局

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#1f1f1f"><ImageView android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:src="@drawable/flower" /><LinearLayout android:layout_width="wrap_content"android:layout_height="match_parent"android:layout_centerInParent="true"android:gravity="center"android:orientation="vertical"><ImageView android:id="@+id/up"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/up" /><ImageView android:id="@+id/down"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/down" /></LinearLayout> </RelativeLayout>

因為我們需要搖一搖的時候有音效,所以需要在在res中新建一個raw文件夾,然后把音頻文件放進文件夾中, 我的音頻文件名為awe

邏輯的處理

public class MainActivity extends AppCompatActivity{//記錄上一次晃動手機的時間private long lastTime;private ImageView upIv;private ImageView downIv;private int sound1;private SoundPool soundPool;private Vibrator vibrator;private SensorManager sensorManager;@Overrideprotected void onCreate (Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//振動器vibrator = ((Vibrator) getSystemService(VIBRATOR_SERVICE));//傳感器sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);upIv = ((ImageView) findViewById(R.id.up));downIv = ((ImageView) findViewById(R.id.down));initSoundPool();}@Overrideprotected void onResume (){super.onResume();if(sensorManager != null){// 注冊監聽器// 第一個參數是Listener,第二個參數是所得傳感器類型,第三個參數值獲取傳感器信息的頻率sensorManager.registerListener(sensorEventListener, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);}}//記得在不用的時候關掉傳感器,因為手機黑屏是不會自動關掉傳感器的,當然如果你覺得電量一直都很足,那算我多嘴咯。@Overrideprotected void onStop (){super.onStop();if(sensorManager != null){// 取消監聽器sensorManager.unregisterListener(sensorEventListener);}}private SensorEventListener sensorEventListener = new SensorEventListener() {//當加速度發生改變時調用//當加速度放生變化時就會調用該方法,所以在一次晃動中該方法實際會調用多次@Overridepublic void onSensorChanged(SensorEvent event) {//獲取手機在不同方向上加速度的大小float valueX = Math.abs(event.values[0]);float valueY = Math.abs(event.values[1]);float valueZ = Math.abs(event.values[2]);//當手機在任意一個方向上加速度的大小超過17時,認為晃動手機了if (valueX > 17 || valueY > 17 || valueZ > 17) {//獲取當前毫秒數long currentTimeMillis = System.currentTimeMillis();//如果兩次連續晃動的時間小于1秒if (currentTimeMillis - lastTime < 1000) {return;}lastTime = currentTimeMillis;//1.執行動畫playAnimation();//2.播放音效playSound();//3.手機震動//1.震動節奏,off/on/off/on,// new long[]{100, 200, 100, 200, 100, 200}這個數組表示// 停止震動100ms/震動200ms/停止震動100ms/......//2.是否循環,-1表示不循環vibrator.vibrate(new long[]{100, 200, 100, 200, 100, 200}, -1);}}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {}};//執行動畫private void playAnimation() {AnimationSet up = new AnimationSet(false);TranslateAnimation upUp = new TranslateAnimation(TranslateAnimation.RELATIVE_TO_SELF,0, TranslateAnimation.RELATIVE_TO_SELF, 0, TranslateAnimation.RELATIVE_TO_SELF, 0,TranslateAnimation.RELATIVE_TO_SELF, -1);upUp.setDuration(1000);TranslateAnimation upDown = new TranslateAnimation(TranslateAnimation.RELATIVE_TO_SELF,0, TranslateAnimation.RELATIVE_TO_SELF, 0, TranslateAnimation.RELATIVE_TO_SELF, 0,TranslateAnimation.RELATIVE_TO_SELF, 1);upDown.setDuration(1000);//延遲1秒執行upDown.setStartOffset(1000);up.addAnimation(upUp);up.addAnimation(upDown);upIv.startAnimation(up);AnimationSet down = new AnimationSet(false);TranslateAnimation downDown = new TranslateAnimation(TranslateAnimation.RELATIVE_TO_SELF,0, TranslateAnimation.RELATIVE_TO_SELF, 0, TranslateAnimation.RELATIVE_TO_SELF, 0,TranslateAnimation.RELATIVE_TO_SELF, 1);downDown.setDuration(1000);TranslateAnimation downUp = new TranslateAnimation(TranslateAnimation.RELATIVE_TO_SELF,0, TranslateAnimation.RELATIVE_TO_SELF, 0, TranslateAnimation.RELATIVE_TO_SELF, 0,TranslateAnimation.RELATIVE_TO_SELF, -1);downUp.setDuration(1000);//延遲1秒執行downUp.setStartOffset(1000);down.addAnimation(downDown);down.addAnimation(downUp);downIv.startAnimation(down);}private void playSound() {//1.音頻文件id//2.3 表示左右聲道的音量//4.優先級//5.循環次數,-1表示無限循環//6.播放速率,取值為0.5~2之間,1表示正常速率播放soundPool.play(sound1, 1, 1, 1, 0, 1);}private void initSoundPool() {if (Build.VERSION.SDK_INT > 20) {SoundPool.Builder builder = new SoundPool.Builder();//設置最大并發流builder.setMaxStreams(3);AudioAttributes.Builder attributes = new AudioAttributes.Builder();attributes.setLegacyStreamType(AudioManager.STREAM_MUSIC);//設置音頻流builder.setAudioAttributes(attributes.build());soundPool = builder.build();} else {//1.最大并發流//2.音頻流//3.音頻質量soundPool = new SoundPool(3, AudioManager.STREAM_MUSIC, 0);}//讀取音頻文件,返回值為音頻文件id//第三個參數表示音頻優先級sound1 = soundPool.load(this, R.raw.awe, 1);} }

當然,需要申明權限,申明手機振動的權限。

<uses-permission android:name="android.permission.VIBRATE"></uses-permission>

總結

以上是生活随笔為你收集整理的传感器的使用,高仿微信摇一摇,动画加声音的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 黄网在线播放 | 九九热色| 亚洲一区视频在线播放 | 91福利视频网站 | 五号特工组之偷天换月 | 国产精品高潮AV无码 | 国产黄a三级三级三级 | 亚洲激情中文字幕 | 成人在线观看一区 | 国产噜噜噜 | 农村黄色片 | 久久久88 | 国产精品久久久久久亚洲影视 | 91精品一区二区三区在线观看 | 色大师av一区二区三区 | 亚洲怡春院 | 无码国产精品一区二区高潮 | 88福利视频 | 好男人www在线视频 我们的2018在线观看免费高清 | 91入囗| 中文字幕亚洲精品在线观看 | 免费成人美女女电影 | 亚洲美女久久 | 黑人3p波多野结衣在线观看 | 床戏高潮做进去大尺度视频 | 麻豆一二三区 | aa在线| 五月天福利视频 | 69日影院 | 久久国色 | 欧美少妇一区二区 | 国产精品视频免费观看 | 在线免费观看视频黄 | 噼里啪啦免费看 | 伊人网视频在线观看 | 丝袜高跟av | 不卡视频在线播放 | 欧美日韩理论 | 一级大片在线观看 | 中文写幕一区二区三区免费观成熟 | 久久国产麻豆 | 在线天堂av| 污的视频在线观看 | 欧美一级片在线观看 | 欧美激情视频一区二区三区在线播放 | 好看的中文字幕 | 9191在线视频| 日韩短视频 | 欧美成人三级精品 | 最近中文字幕在线观看视频 | 狠狠操狠狠爱 | 亚洲婷婷一区 | 亚洲天堂偷拍 | 天堂中文在线最新 | 国产日韩一级 | 欧美中文字幕在线播放 | 丝袜在线视频 | 亚洲国产精品视频在线观看 | 波多野42部无码喷潮在线 | 美女扒开内裤让男人捅 | 东北毛片 | 欧美播放器| 成人3d动漫一区二区三区 | 成年人一级片 | 国产一区久久久 | av毛片一区 | 久久久久久www| 久久久久久综合网 | 成人做受黄大片 | 1024视频在线| 黄免费在线观看 | 日本成人免费观看 | 国产成人精品免费视频 | 五月婷婷视频在线观看 | 一区二区成人免费视频 | xxxwww在线观看 | 中国浓毛少妇毛茸茸 | 婷婷深爱激情 | 九九在线观看视频 | 久久看看| 双性懵懂美人被强制调教 | www.色日本| 一区二区三区在线播放 | 成人黄色电影在线 | 777av| 九热精品| 成人在线视频网站 | 成人av电影网站 | 中文字幕国产一区 | 色交视频 | 男人的天堂视频在线观看 | 亚洲一区毛片 | 欧美精品一级 | 成人a在线 | 在线观看视频日韩 | 欧美bbbbbbbbbbbb18av | 欧美成人手机视频 | 日本后进式猛烈xx00动态图 | 亚洲午夜精品久久久久久人妖 |