欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

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

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

創(chuàng)新互聯(lián)建站基于成都重慶香港及美國(guó)等地區(qū)分布式IDC機(jī)房數(shù)據(jù)中心構(gòu)建的電信大帶寬,聯(lián)通大帶寬,移動(dòng)大帶寬,多線BGP大帶寬租用,是為眾多客戶提供專業(yè)服務(wù)器托管報(bào)價(jià),主機(jī)托管價(jià)格性價(jià)比高,為金融證券行業(yè)四川綿陽(yáng)服務(wù)器托管,ai人工智能服務(wù)器托管提供bgp線路100M獨(dú)享,G口帶寬及機(jī)柜租用的專業(yè)成都idc公司。

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ù)的上限;
      流的類型,一般都是使用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ì)很大,所以一般不播放歌曲類的文件。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

當(dāng)前題目:java仿微信搖一搖實(shí)現(xiàn)播放音樂(lè)
分享網(wǎng)址:http://aaarwkj.com/article16/gihegg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、品牌網(wǎng)站制作、關(guān)鍵詞優(yōu)化、微信公眾號(hào)網(wǎng)站設(shè)計(jì)、外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

小程序開(kāi)發(fā)
求个手机免费在线观看av网址| 国产日韩手机在线不卡视频| 久久99热这里只频精品| 亚洲综合日韩丝袜人妻| 国产av麻豆全部免费| 亚洲av男人电影天堂| 久久热在线观看免费高清| 国产精品一区二区av不卡| 欧美欧美欧美欧美一区| 国产av自拍在线免费观看| 国产精品专区日产一区| 日韩一级免费高清黄片| 亚洲午夜精品美女写真| 国产自拍在线视频精品| 中文字幕成人在线电影| 欧美亚洲国产日韩在线高清| 国产精品剧情在线播放| 国产欧美日韩另类在线播放| 久久久人妻精品少妇av| 97久久精品国产成人影院| 亚洲一区二区三区在线观看| 天天干天天干夜夜操| av免费观看日韩永久| 国产精品日韩经典中文字幕| 国产999精品免费国产| 国产成人原创免费观看| 6080yy精品一区二区三区| 国产国产乱老熟女视频网站| 日韩在线中文字幕精品| 91福利社区欧美大片| 九九视频在线观看免费观看| 在线观看一区二区三区国产视频 | 色婷婷精品一区二区三区| 亚洲精品紧身裙女教师av| 亚洲一区二区三区 日韩精品| 久久热在线视频精品视频| 日韩女同一区二区三区在线观看| 一区二区三区在线观看日韩| 久久国产亚洲精品赲碰热| 亚洲一区二区精品天堂| 欧美日韩伦理片在线观看|