zoukankan      html  css  js  c++  java
  • Android_(服务)Vibrator振动器

    Vibrator振动器是Android给我们提供的用于机身震动的一个服务,例如当收到推送消息的时候我们可以设置震动提醒,也可以运用到游戏当中增强玩家互动性

    
    

    运行截图:

    程序结构

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.administrator.myapplication">
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <activity android:name=".MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    
        <uses-permission android:name="android.permission.VIBRATE"/>
    
    </manifest>
    AndroidManifest.xml
    package com.example.administrator.myapplication;
    
    import android.app.Service;
    
    import android.content.Context;
    
    import android.os.Vibrator;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    
    import android.view.View;
    import android.widget.Button;
    
    import android.widget.Toast;
    
    
    
    
    public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    
        private Button btn_hasVibrator;
        private Button btn_short;
        private Button btn_long;
        private Button btn_rhythm;
        private Button btn_cancle;
        private Vibrator myVibrator;
        private Context mContext;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            //获得系统的Vibrator实例:
            myVibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE);
            mContext = MainActivity.this;
            bindViews();
        }
    
        private void bindViews() {
            btn_hasVibrator = (Button) findViewById(R.id.btn_hasVibrator);
            btn_short = (Button) findViewById(R.id.btn_short);
            btn_long = (Button) findViewById(R.id.btn_long);
            btn_rhythm = (Button) findViewById(R.id.btn_rhythm);
            btn_cancle = (Button) findViewById(R.id.btn_cancle);
    
            btn_hasVibrator.setOnClickListener(this);
            btn_short.setOnClickListener(this);
            btn_long.setOnClickListener(this);
            btn_rhythm.setOnClickListener(this);
            btn_cancle.setOnClickListener(this);
        }
    
    
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.btn_hasVibrator:
                    Toast.makeText(mContext, myVibrator.hasVibrator() ? "当前设备有振动器" : "当前设备无振动器",
                            Toast.LENGTH_SHORT).show();
                    break;
                case R.id.btn_short:
                    myVibrator.cancel();
                    myVibrator.vibrate(new long[]{100, 200, 100, 200}, 0);
                    Toast.makeText(mContext, "短振动", Toast.LENGTH_SHORT).show();
                    break;
                case R.id.btn_long:
                    myVibrator.cancel();
                    myVibrator.vibrate(new long[]{100, 100, 100, 1000}, 0);
                    Toast.makeText(mContext, "长振动", Toast.LENGTH_SHORT).show();
                    break;
                case R.id.btn_rhythm:
                    myVibrator.cancel();
                    myVibrator.vibrate(new long[]{500, 100, 500, 100, 500, 100}, 0);
                    Toast.makeText(mContext, "节奏振动", Toast.LENGTH_SHORT).show();
                    break;
                case R.id.btn_cancle:
                    myVibrator.cancel();
                    Toast.makeText(mContext, "取消振动", Toast.LENGTH_SHORT).show();
            }
        }
    }
    MainActivity
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context="com.example.administrator.myapplication.MainActivity"
        android:weightSum="1">
    
        <Button
            android:id="@+id/btn_hasVibrator"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="监测手机是否有振动器" />
    
    
        <Button
            android:id="@+id/btn_short"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="短振动" />
    
        <Button
            android:id="@+id/btn_long"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="长振动" />
    
        <Button
            android:id="@+id/btn_rhythm"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="节奏振动" />
    
        <Button
            android:id="@+id/btn_cancle"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="取消振动" />
    
    </LinearLayout>
    activity_main.xml

    一、获得系统的Vibrator

            myVibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE);
            mContext = MainActivity.this;

    二、判断并设置频率不同的震动器

     

    abstract void cancel():关闭或者停止振动器

    abstract boolean hasVibrator():判断硬件是否有振动器

    void vibrate(long milliseconds):控制手机振动为milliseconds毫秒

    void vibrate(long[] pattern,int repeat):指定手机以pattern指定的模式振动

    第一个参数:new int[200,400,600,800],在200,400,600,800这个时间交替启动与关闭振动器
    第二个参数:重复次数,如果是-1的只振动一次,如果是0的话则一直振动
     public void onClick(View v) {
            switch (v.getId()) {
                case R.id.btn_hasVibrator:
                    Toast.makeText(mContext, myVibrator.hasVibrator() ? "当前设备有振动器" : "当前设备无振动器",
                            Toast.LENGTH_SHORT).show();
                    break;
                case R.id.btn_short:
                    myVibrator.cancel();
                    myVibrator.vibrate(new long[]{100, 200, 100, 200}, 0);
                    Toast.makeText(mContext, "短振动", Toast.LENGTH_SHORT).show();
                    break;
                case R.id.btn_long:
                    myVibrator.cancel();
                    myVibrator.vibrate(new long[]{100, 100, 100, 1000}, 0);
                    Toast.makeText(mContext, "长振动", Toast.LENGTH_SHORT).show();
                    break;
                case R.id.btn_rhythm:
                    myVibrator.cancel();
                    myVibrator.vibrate(new long[]{500, 100, 500, 100, 500, 100}, 0);
                    Toast.makeText(mContext, "节奏振动", Toast.LENGTH_SHORT).show();
                    break;
                case R.id.btn_cancle:
                    myVibrator.cancel();
                    Toast.makeText(mContext, "取消振动", Toast.LENGTH_SHORT).show();
            }
        }

    三、开启系统权限

     <uses-permission android:name="android.permission.VIBRATE"/>
    (如需转载学习,请标明出处)
  • 相关阅读:
    python之切片
    python之递归函数
    python之函数的参数
    python之定义函数
    python函数之调用函数
    小地图
    利用脚本对游戏对象进行操作
    Unity中www的基本应用
    U3D脚本开发基础
    U3D游戏开发基础
  • 原文地址:https://www.cnblogs.com/1138720556Gary/p/9359278.html
Copyright © 2011-2022 走看看