一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java仿微信搖一搖實現播放音樂

java仿微信搖一搖實現播放音樂

2021-05-11 13:39ami_daqi Java教程

這篇文章主要為大家詳細介紹了java仿微信搖一搖實現播放音樂,具有一定的參考價值,感興趣的小伙伴們可以參考一下

搖一搖功能是使用手機加速度傳感器來判斷是否處于搖一搖狀態,從而進行相應的操作。

1、將音樂文件放在res/raw下,如果沒有raw,創建一個

2、布局文件

java" id="highlighter_904474">
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?xml version="1.0" encoding="utf-8"?>
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:id="@+id/activity_shake"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  tools:context="com.sq.dissertation.activity.shakeactivity"
  android:background="#1d1d1d">
<imageview
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_centerinparent="true"
  android:src="@mipmap/shakehideimg_man2"/>
  <linearlayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical">
    <imageview
      android:id="@+id/hand_up"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:src="@mipmap/shake_logo_up"/>
    <imageview
      android:id="@+id/hand_down"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:src="@mipmap/shake_logo_down"/>
  </linearlayout>
</relativelayout>

3、java代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
public class shakeactivity extends appcompatactivity implements sensoreventlistener {
 
  private imageview ivup;
  private imageview ivdown;
  private sensormanager sensormanager;
  private vibrator vibrator;
  private sensor sensor;
  private mediaplayer player;
  private objectanimator upanimator;
  private objectanimator downanimator;
 
  @override
  protected void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.activity_shake);
    ivup = ((imageview) findviewbyid(r.id.hand_up));
    ivdown = ((imageview) findviewbyid(r.id.hand_down));
    //獲取傳感器管理者
    sensormanager = ((sensormanager) getsystemservice(sensor_service));
    //實例化手機震動的對象
    vibrator = ((vibrator) getsystemservice(vibrator_service));
    //獲取加速度傳感器
    sensor = sensormanager.getdefaultsensor(sensor.type_accelerometer);
    /*實例化對象,參數:同時播放的流的最大數量,即同時播放的音樂數的上限;
      流的類型,一般都是使用audiomanager.stream_music表示可以重復播放
      采樣率轉化質量,但是現在該功能還不能生效,建議用0
    */
//    soundpool = new soundpool(1, audiomanager.stream_music, 0);
    //參數三沒有效果,建議用1
//    loadid = soundpool.load(shakeactivity.this, r.raw.three, 1);
    player = mediaplayer.create(this, r.raw.music);
    initanimation();
 
  }
 
  private void initanimation() {
    //上下兩張圖片的動畫
    upanimator = objectanimator.offloat(ivup, "translationy", 0, -200, 0);
    upanimator.setinterpolator(new acceleratedecelerateinterpolator());
    upanimator.setduration(2000);
    downanimator = objectanimator.offloat(ivdown, "translationy", 0, 200, 0);
    downanimator.setinterpolator(new acceleratedecelerateinterpolator());
    downanimator.setduration(2000);
  }
 
  @override
  protected void onresume() {
    super.onresume();
    if (sensormanager != null) {
    //注冊監聽器,監聽,傳感器,獲取傳感器的頻率
    sensormanager.registerlistener(this, sensor, sensormanager.sensor_delay_normal);
    }
 
  }
 
  @override
  protected void onpause() {
    super.onpause();
    if (sensormanager != null) {
      //取消監聽器
      sensormanager.unregisterlistener(this);
      //釋放音頻資源
//    soundpool.unload(loadid);
    }
  }
 
  @override
  protected void ondestroy() {
    super.ondestroy();
    player.release();
 
  }
 
  @override
  public void onsensorchanged(sensorevent event) {
    //獲取傳感器信息改變時的數據
    float[] values = event.values;
    //x軸方向的重力加速度,向右為正
    float x = values[0];
    //y軸方向的重力加速度,向左為正
    float y = values[1];
    //z軸方向的重力加速度,向上為正
    float z = values[2];
    //一般在這三個方向的重力加速度達到40就達到了搖晃手機的狀態
    int value = 18;
    if (math.abs(x) > value || math.abs(y) > value || math.abs(z) > 19) {
      long patter[] = {200, 1000};
      vibrator.vibrate(patter,1);
      upanimator.start();
      downanimator.start();
      /*
      1f:左聲道音量
      1f:右聲道音量
      1:音頻的優先級,值越大優先級越高,
      0:循環播放的次數,0為播放一次,-1為無限循環,其他值為loop+1次數
      1f:播放速率,范圍0.5-2.0(1為正常速率)
       */
//      soundpool.play(loadid, 1f, 1f, 1, 0, 1f);
      if (player.isplaying()) {
        player.seekto(0);
      }else{
        player.start();
      }
    }
  }
 
  @override
  public void onaccuracychanged(sensor sensor, int accuracy) {
 
  }
}

補充:java代碼中出現的soundpool來播放音效,它適合播放短促的音效,它最多只能申請1m的內存空間,有些文件本身不大,但是解碼后會很大,所以一般不播放歌曲類的文件。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/ami_daqi/article/details/65937785

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 夫妻性生活在线 | 操的我好爽| 精品国产乱码久久久久久软件 | 国产三及 | www国产91| 极品美女aⅴ高清在线观看 极品ts赵恩静和直男激战啪啪 | 天天色综合6 | 男人女人性生活视频 | 国产成人精品一区二三区 | 欧美a级v片在线观看一区 | 美女下面揉出水免费视频 | 99久久精品国产免费 | ckinese中国男同gay男男 | 热99精品| 亚洲欧美另类第一页 | 青草青青在线 | 插入逼| 美女做又爽又黄又猛 | 亚洲国产韩国欧美在线不卡 | futa巨大好爽好长 | 亚洲乱亚洲乱妇41p国产成人 | 国产成人精品.一二区 | 热99这里有精品综合久久 | 精品视频中文字幕 | 九色PORNY真实丨国产免费 | 女子校生下媚药在线观看 | 国产日本欧美亚洲精品视 | 饭冈加奈子黑人解禁在线播放 | 阿v天堂2020 α片免费 | 免费观看一级特黄三大片视频 | 欧美成人免费观看久久 | 国产精品激情综合久久 | 好大好硬好深好爽gif图 | 免费国产福利 | 九九精品视频在线观看九九 | 九九九九在线视频播放 | 四虎精品在线视频 | 免费在线看片网站 | 亚洲国产影院 | 亚洲国产果果在线播放在线 | 人禽l交视频在线播放 视频 |