最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java仿微信搖一搖實(shí)現(xiàn)播放音樂(lè)

 更新時(shí)間:2018年06月25日 14:35:57   作者:ami_daqi  
這篇文章主要為大家詳細(xì)介紹了java仿微信搖一搖實(shí)現(xiàn)播放音樂(lè),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

搖一搖功能是使用手機(jī)加速度傳感器來(lái)判斷是否處于搖一搖狀態(tài),從而進(jìn)行相應(yīng)的操作。

1、將音樂(lè)文件放在res/raw下,如果沒(méi)有raw,創(chuàng)建一個(gè)

2、布局文件

<?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代碼

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));
    //實(shí)例化手機(jī)震動(dòng)的對(duì)象
    vibrator = ((Vibrator) getSystemService(VIBRATOR_SERVICE));
    //獲取加速度傳感器
    sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
    /*實(shí)例化對(duì)象,參數(shù):同時(shí)播放的流的最大數(shù)量,即同時(shí)播放的音樂(lè)數(shù)的上限;
      流的類(lèi)型,一般都是使用AudioManager.STREAM_MUSIC表示可以重復(fù)播放
      采樣率轉(zhuǎn)化質(zhì)量,但是現(xiàn)在該功能還不能生效,建議用0
    */
//    soundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
    //參數(shù)三沒(méi)有效果,建議用1
//    loadId = soundPool.load(ShakeActivity.this, R.raw.three, 1);
    player = MediaPlayer.create(this, R.raw.music);
    initAnimation();

  }

  private void initAnimation() {
    //上下兩張圖片的動(dòng)畫(huà)
    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) {
    //注冊(cè)監(jiān)聽(tīng)器,監(jiān)聽(tīng),傳感器,獲取傳感器的頻率
    sensorManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_NORMAL);
    }

  }

  @Override
  protected void onPause() {
    super.onPause();
    if (sensorManager != null) {
      //取消監(jiān)聽(tīng)器
      sensorManager.unregisterListener(this);
      //釋放音頻資源
//    soundPool.unload(loadId);
    }
  }

  @Override
  protected void onDestroy() {
    super.onDestroy();
    player.release();

  }

  @Override
  public void onSensorChanged(SensorEvent event) {
    //獲取傳感器信息改變時(shí)的數(shù)據(jù)
    float[] values = event.values;
    //x軸方向的重力加速度,向右為正
    float x = values[0];
    //y軸方向的重力加速度,向左為正
    float y = values[1];
    //z軸方向的重力加速度,向上為正
    float z = values[2];
    //一般在這三個(gè)方向的重力加速度達(dá)到40就達(dá)到了搖晃手機(jī)的狀態(tài)
    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:音頻的優(yōu)先級(jí),值越大優(yōu)先級(jí)越高,
      0:循環(huán)播放的次數(shù),0為播放一次,-1為無(wú)限循環(huán),其他值為loop+1次數(shù)
      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) {

  }
}

補(bǔ)充:Java代碼中出現(xiàn)的SoundPool來(lái)播放音效,它適合播放短促的音效,它最多只能申請(qǐng)1M的內(nèi)存空間,有些文件本身不大,但是解碼后會(huì)很大,所以一般不播放歌曲類(lèi)的文件。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • mybatis insert 返回自增主鍵的實(shí)現(xiàn)示例

    mybatis insert 返回自增主鍵的實(shí)現(xiàn)示例

    mybatis 在新增之后怎么也獲取不到自增主鍵,本文主要介紹了mybatis insert 返回自增主鍵的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-06-06
  • Java實(shí)現(xiàn)解析第三方接口返回的json

    Java實(shí)現(xiàn)解析第三方接口返回的json

    在實(shí)際開(kāi)發(fā)過(guò)程中,免不了和其他公司進(jìn)行聯(lián)調(diào),調(diào)用第三方接口,這個(gè)時(shí)候我們就需要根據(jù)對(duì)方返回的數(shù)據(jù)進(jìn)行解析,獲得我們想要的字段,下面我們就來(lái)看看具體有哪些方法吧
    2024-01-01
  • Spring4如何自定義@Value功能詳解

    Spring4如何自定義@Value功能詳解

    這篇文章主要給大家介紹了關(guān)于Spring4如何自定義@Value功能的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用spring4具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-09-09
  • springboot集成測(cè)試最小化依賴(lài)實(shí)踐示例

    springboot集成測(cè)試最小化依賴(lài)實(shí)踐示例

    這篇文章主要為大家介紹了springboot集成測(cè)試最小化依賴(lài)實(shí)踐示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • mysql高版本(8.0+)group_by報(bào)錯(cuò)的處理方法

    mysql高版本(8.0+)group_by報(bào)錯(cuò)的處理方法

    本文主要介紹了mysql高版本(8.0+)group_by報(bào)錯(cuò)的處理方法,這個(gè)錯(cuò)誤一般發(fā)生在mysql 5.7以及 5.7以上的版本中,本文就來(lái)介紹一下兩種解決方法,感興趣的可以了解一下
    2023-09-09
  • 詳解Java中static關(guān)鍵字和內(nèi)部類(lèi)的使用

    詳解Java中static關(guān)鍵字和內(nèi)部類(lèi)的使用

    這篇文章主要為大家詳細(xì)介紹了Java中static關(guān)鍵字和內(nèi)部類(lèi)的使用,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-08-08
  • springboot如何配置ssl支持https

    springboot如何配置ssl支持https

    在SpringBoot應(yīng)用中配置SSL支持HTTPS需要?jiǎng)?chuàng)建KeyStore并在application.yml中進(jìn)行相應(yīng)配置,首先,使用java的keytool工具創(chuàng)建KeyStore,這涉及到設(shè)置密鑰對(duì)、指定密鑰算法(RSA)、密鑰大小(2048位)、密鑰庫(kù)名稱(chēng)、證書(shū)有效期等,創(chuàng)建KeyStore后
    2024-10-10
  • nexus安裝及配置圖文教程

    nexus安裝及配置圖文教程

    Nexus 是Maven倉(cāng)庫(kù)管理器,通過(guò)nexus可以搭建maven倉(cāng)庫(kù),同時(shí)nexus還提供強(qiáng)大的倉(cāng)庫(kù)管理功能,構(gòu)件搜索功能等,文中有非常詳細(xì)的圖文介紹,對(duì)小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • SpringBoot實(shí)現(xiàn)國(guó)際化的操作步驟

    SpringBoot實(shí)現(xiàn)國(guó)際化的操作步驟

    國(guó)際化(Internationalization) 是指為了適應(yīng)不同語(yǔ)言、文化和地區(qū)的用戶,使軟件能夠方便地進(jìn)行本地化修改的過(guò)程,本文介紹了SpringBoot 國(guó)際化功能的簡(jiǎn)單使用,感興趣的朋友可以參考下
    2024-02-02
  • 實(shí)例詳解Java調(diào)用第三方接口方法

    實(shí)例詳解Java調(diào)用第三方接口方法

    很多項(xiàng)目都會(huì)封裝規(guī)定好本身項(xiàng)目的接口規(guī)范,所以大多數(shù)需要去調(diào)用對(duì)方提供的接口或第三方接口(短信、天氣等),下面這篇文章主要給大家介紹了關(guān)于Java調(diào)用第三方接口方法的相關(guān)資料,需要的朋友可以參考下
    2022-06-06

最新評(píng)論

大姚县| 凤城市| 汾西县| 桐乡市| 莒南县| 博白县| 临桂县| 上犹县| 涡阳县| 高阳县| 永善县| 瓦房店市| 清镇市| 临澧县| 辽中县| 施秉县| 武川县| 卓资县| 浮山县| 定陶县| 绥芬河市| 安丘市| 麻江县| 临桂县| 明水县| 江源县| 连南| 天全县| 虎林市| 双城市| 高台县| 甘孜县| 盐池县| 姜堰市| 肃南| 玉树县| 文水县| 东莞市| 金溪县| 平利县| 沙洋县|