• 手机喊话应用实现思路


    手机要是动一下,就喊话“摇摇零线,摇摇零线”,是不是比较酷,

    这里实现一下手机翻转一下,播放声音的效果,

    通过sensor识别到手机的运动状况,然后播放音频,

    1. public class MainActivity extends AppCompatActivity {
    2. MySensorEventListener sensorEventListener;
    3. private String tag = "test9";
    4. public class MySensorEventListener implements SensorEventListener {
    5. private float prevY;
    6. private float prevZ;
    7. @Override
    8. public void onSensorChanged(SensorEvent event) {
    9. float[] values = event.values;
    10. int type = event.sensor.getType();
    11. if (type == Sensor.TYPE_ACCELEROMETER) {
    12. float x = values[0];
    13. float y = values[1];
    14. float z = values[2];
    15. if (Float.compare(prevY, y) != 0 && Float.compare(prevZ, z) != 0) {
    16. if (y > prevY && z > prevZ) {
    17. // 顺时针翻转
    18. Log.i(tag, "1====");
    19. onFlip();
    20. } else if (y < prevY && z < prevZ) {
    21. // 逆时针翻转
    22. Log.i(tag, "2====");
    23. onFlip();
    24. Play();
    25. }
    26. }
    27. } else if (type == Sensor.TYPE_GYROSCOPE) {
    28. // 使用陀螺仪传感器的数据识别翻转,具体算法需要自己实现
    29. }
    30. }
    31. private void onFlip() {
    32. // 执行翻转后的操作
    33. }
    34. @Override
    35. public void onAccuracyChanged(Sensor sensor, int accuracy) {
    36. // Do nothing
    37. }
    38. }
    39. void Play() {
    40. MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.hello);
    41. // MediaPlayer mediaPlayer = new MediaPlayer();
    42. try {
    43. Log.i(tag, "play =========== ");
    44. // mediaPlayer.setDataSource("/sdcard/Recordings/910.m4a");
    45. mediaPlayer.start();
    46. } catch (Exception e) {
    47. e.printStackTrace();
    48. }
    49. }
    50. @Override
    51. protected void onCreate(Bundle savedInstanceState) {
    52. super.onCreate(savedInstanceState);
    53. setContentView(R.layout.activity_main);
    54. sensorEventListener = new MySensorEventListener();
    55. SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
    56. sensorManager.registerListener(sensorEventListener,
    57. sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_UI);
    58. }
    59. }

    初步的一个实现,没有使用service,直接播放声音,连续调用会出现同时播放的情况,反而有了回声的效果

  • 相关阅读:
    MongoDB简明手册
    Django Test
    leetcode451:根据字符出现频率排序
    STM32:DMA数据转运+AD多通道(软件篇)
    视频中场的概念(1080I和1080P)和BT601/656/709/1120/2020/2077
    Vue-router 路由的基本使用
    JAVA-LocalDateTime时间格式化,转换时间戳和源码分析
    七夕礼物送什么好?送男生七夕礼物推荐
    数据管理能力成熟度评估模型是什么
    SM2密码算法数据结构
  • 原文地址:https://blog.csdn.net/aaajj/article/details/132796297