返回顶部
首页 > 资讯 > 移动开发 >Android实现摇一摇功能
  • 361
分享到

Android实现摇一摇功能

Android 2022-06-06 06:06:39 361人浏览 八月长安
摘要

实现“摇一摇”功能,其实很简单,就是检测手机的重力感应,具体实现代码如下: 1、在 AndroidManifest.xml 中添加操作权限 2、实现代码 package

实现“摇一摇”功能,其实很简单,就是检测手机的重力感应,具体实现代码如下:

1、在 AndroidManifest.xml 中添加操作权限

2、实现代码


 package com.xs.test; 
import android.app.Activity; 
import android.hardware.Sensor; 
import android.hardware.SensorEvent; 
import android.hardware.SensorEventListener; 
import android.hardware.SensORManager; 
import android.os.Bundle; 
import android.os.Handler; 
import android.os.Message; 
import android.os.Vibrator; 
import android.util.Log; 
import android.widget.Toast; 
 
public class TestSensorActivity extends Activity { 
  private SensorManager sensorManager; 
  private Vibrator vibrator; 
  private static final String TAG = "TestSensorActivity"; 
  private static final int SENSOR_SHAKE = 10; 
   
  @Override 
  public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); 
    vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE); 
  } 
  @Override 
  protected void onResume() { 
    super.onResume(); 
    if (sensorManager != null) {// 注册监听器 
      sensorManager.reGISterListener(sensorEventListener, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL); 
      // 第一个参数是Listener,第二个参数是所得传感器类型,第三个参数值获取传感器信息的频率 
    } 
  } 
  @Override 
  protected void onPause() { 
    super.onPause(); 
    if (sensorManager != null) {// 取消监听器 
      sensorManager.unregisterListener(sensorEventListener); 
    } 
  } 
   
  private SensorEventListener sensorEventListener = new SensorEventListener() { 
    @Override 
    public void onSensorChanged(SensorEvent event) { 
      // 传感器信息改变时执行该方法 
      float[] values = event.values; 
      float x = values[0]; // x轴方向的重力加速度,向右为正 
      float y = values[1]; // y轴方向的重力加速度,向前为正 
      float z = values[2]; // z轴方向的重力加速度,向上为正 
      Log.i(TAG, "x轴方向的重力加速度" + x + ";y轴方向的重力加速度" + y + ";z轴方向的重力加速度" + z); 
      // 一般在这三个方向的重力加速度达到40就达到了摇晃手机的状态。 
      int medumValue = 19;// 三星 i9250怎么晃都不会超过20,没办法,只设置19了 
      if (Math.abs(x) > medumValue || Math.abs(y) > medumValue || Math.abs(z) > medumValue) { 
        vibrator.vibrate(200); 
        Message msg = new Message(); 
        msg.what = SENSOR_SHAKE; 
        handler.sendMessage(msg); 
      } 
    } 
    @Override 
    public void onAccuracyChanged(Sensor sensor, int accuracy) { 
    } 
  }; 
   
  Handler handler = new Handler() { 
    @Override 
    public void handleMessage(Message msg) { 
      super.handleMessage(msg); 
      switch (msg.what) { 
      case SENSOR_SHAKE: 
        Toast.makeText(TestSensorActivity.this, "检测到摇晃,执行操作!", Toast.LENGTH_SHORT).show(); 
        Log.i(TAG, "检测到摇晃,执行操作!"); 
        break; 
      } 
    } 
  }; 
} 

这种摇一摇比较普通,没有经过算法的加强,重力加速度就是10。
算法优化如下


package com.example.url;
import java.io.IOException;
import java.net.URL;
import com.hahashijie.imageload.ImageLoader;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.Vibrator;
import android.util.Log;
import android.widget.ImageView;
@SuppressLint("HandlerLeak")
public class MainActivity extends Activity {
private ImageView image;
private SensorManager sensorManager;
private Sensor sensor;
private Vibrator vibrator;
private static final int UPTATE_INTERVAL_TIME = 50;
private static final int SPEED_SHRESHOLD = 30;//这个值调节灵敏度
private long lastUpdateTime;
private float lastX;
private float lastY;
private float lastZ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
image = (ImageView) findViewById(R.id.image);
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
if (sensorManager != null) {
      sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
    }
    if (sensor != null) {
    sensorManager.registerListener(sensorEventListener,
    sensor,
SensorManager.SENSOR_DELAY_GAME);//这里选择感应频率
    }
}

private SensorEventListener sensorEventListener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
long currentUpdateTime = System.currentTimeMillis();
long timeInterval = currentUpdateTime - lastUpdateTime;
if (timeInterval < UPTATE_INTERVAL_TIME) {
return;
}
lastUpdateTime = currentUpdateTime;
// 传感器信息改变时执行该方法
float[] values = event.values;
float x = values[0]; // x轴方向的重力加速度,向右为正
float y = values[1]; // y轴方向的重力加速度,向前为正
float z = values[2]; // z轴方向的重力加速度,向上为正
float deltaX = x - lastX;
float deltaY = y - lastY;
float deltaZ = z - lastZ;
lastX = x;
lastY = y;
lastZ = z;
double speed = (Math.sqrt(deltaX * deltaX + deltaY * deltaY
+ deltaZ * deltaZ) / timeInterval) * 100;
if (speed >= SPEED_SHRESHOLD) {
vibrator.vibrate(300);
image.setImageResource(R.drawable.running01);
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
};
}
您可能感兴趣的文章:android重力感应开发微信摇一摇功能Android编程使用加速度传感器实现摇一摇功能及优化的方法详解Android实现iPhone晃动撤销输入功能 Android仿微信摇一摇功能Android利用传感器仿微信摇一摇功能Android利用传感器实现微信摇一摇功能Android 微信摇一摇功能实现详细介绍android 类似微信的摇一摇功能实现思路及代码java仿微信摇一摇实现播放音乐


--结束END--

本文标题: Android实现摇一摇功能

本文链接: https://lsjlt.com/news/23363.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android实现摇一摇功能
    实现“摇一摇”功能,其实很简单,就是检测手机的重力感应,具体实现代码如下: 1、在 AndroidManifest.xml 中添加操作权限 2、实现代码 package ...
    99+
    2022-06-06
    Android
  • Android实现摇一摇简单功能
    说起摇一摇大家可能就会想到微信的摇一摇功能。后来很多APP也跟着上了摇一摇的相关功能。这里我们就介绍一下摇一摇怎么做。 步骤1:声明一个SensorManager对象 步骤2:重写A...
    99+
    2024-04-02
  • 怎么在Android中实现一个摇一摇功能
    本篇文章给大家分享的是有关怎么在Android中实现一个摇一摇功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。步骤1:声明一个SensorManager对象步骤2:重写Act...
    99+
    2023-06-14
  • Android 微信摇一摇功能实现详细介绍
    Android 微信摇一摇功能实现,最近学习传感器,就想实现摇一摇的功能,上网查了些资料,就整理下。如有错误,还请指正。 开发环境 Android Studio 2.2.1...
    99+
    2022-06-06
    Android
  • html5怎么实现摇一摇的功能
    这篇文章主要讲解了“html5怎么实现摇一摇的功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“html5怎么实现摇一摇的功能”吧! ...
    99+
    2024-04-02
  • Android利用传感器实现微信摇一摇功能
    本文实例为大家分享了Android微信摇一摇功能的实现方法,供大家参考,具体内容如下 import java.util.ArrayList; import java.ut...
    99+
    2022-06-06
    传感器 Android
  • JavaScript+H5如何实现微信摇一摇功能
    这篇文章主要介绍JavaScript+H5如何实现微信摇一摇功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!项目终于如约上线,但是在春节前又有一个新的活动要做,类似微信的摇一摇活动...
    99+
    2024-04-02
  • Html5+JS如何实现手机摇一摇功能
    本文将为大家详细介绍“Html5+JS如何实现手机摇一摇功能”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“Html5+JS如何实现手机摇一摇功能...
    99+
    2024-04-02
  • Html5+JS实现手机摇一摇功能的示例
    小编给大家分享一下Html5+JS实现手机摇一摇功能的示例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!js有什么特点1、js属于一种解释性脚本语言;2、在绝大多...
    99+
    2023-06-09
  • android 类似微信的摇一摇功能实现思路及代码
    代码如下: package com.eboy.testyaoyiyao; import java.text.SimpleDateFormat; import java.uti...
    99+
    2022-06-06
    Android
  • Android如何使用加速度传感器实现摇一摇功能
    这篇文章将为大家详细讲解有关Android如何使用加速度传感器实现摇一摇功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体如下:目前很多应用已经实现了摇一摇功能,这里通过讲解该功能的原理及实现回顾一下...
    99+
    2023-05-30
    android
  • Redis制作微信摇一摇功能
    Redis提供了地理位置信息(GEO)功能,有了他就可以完成附近的人、摇一摇等功能。首先,介绍下GEO的相关API。GEO API添加地址位置信息geoadd key longitude latitude ...
    99+
    2024-04-02
  • Android利用传感器仿微信摇一摇功能
    传感器简单的介绍一下传感器: 就是设备用来感知周边环境变化的硬件。Android中的传感器包含在传感器框架中,属于android.hardware.*(硬件部分)传感器框架主要包含四个部分:① SensorManager:用来获取传感器的入...
    99+
    2023-05-31
    android 摇一摇
  • 如何通过html5 DeviceOrientation实现微信摇一摇功能
    这篇文章将为大家详细讲解有关如何通过html5 DeviceOrientation实现微信摇一摇功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在HTML...
    99+
    2024-04-02
  • 如何使用HTML 5实现手机摇一摇功能
    如何使用HTML 5实现手机摇一摇功能,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。deviceOrientation:封装了...
    99+
    2024-04-02
  • 怎么用html5的DeviceOrientation实现微信摇一摇功能
    这篇“怎么用html5的DeviceOrientation实现微信摇一摇功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有...
    99+
    2024-04-02
  • 微信小程序怎样开发摇一摇功能
    这篇文章给大家分享的是有关微信小程序怎样开发摇一摇功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。微信小程序摇一摇方法定义: let shakeInfo&n...
    99+
    2024-04-02
  • 微信小程序如何实现摇一摇
    这篇文章将为大家详细讲解有关微信小程序如何实现摇一摇,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。微信小程序目录为了更好的理解小程序和小程序开发,我们首先来看一下项目的目...
    99+
    2024-04-02
  • 基于HTML5实现类似微信手机摇一摇功能的示例分析
    小编给大家分享一下基于HTML5实现类似微信手机摇一摇功能的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、 ...
    99+
    2024-04-02
  • 怎么在Html5中实现手机摇一摇事件
    怎么在Html5中实现手机摇一摇事件?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。<template>  <div id=&...
    99+
    2023-06-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作