ym——Android从零开始(30)(WIFI、传感器)(新)

转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持!


WIFI、传感器

Wifi简介

WifiWireless Fidelity,无线相容性认证)是IEEE802.11b的别称,是由一个名为无线以太网兼容性联盟的组织所发布的业界术语。它是一种短程无线传输协议技术,其最大优点就是传输速度较高,可以达到11Mbit/s,另外它的有效距离也很长。


开启wifi

//wifi管理器
           WifiManager wm = (WifiManager)getSystemService(Context.WIFI_SERVICE);
           if(!wm.isWifiEnabled()){
                  wm.setWifiEnabled(true);
           }

关闭wifi

           WifiManager wm = (WifiManager)getSystemService(Context.WIFI_SERVICE);
           if(wm.isWifiEnabled()){
                  wm.setWifiEnabled(false);
           }

扫描wifi

 //注册广播
       IntentFilter filter = new IntentFilter();
       filter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
       registerReceiver(new MyReceiver(), filter);
      
       wm = (WifiManager) getSystemService(Context.WIFI_SERVICE);
       if(!wm.isWifiEnabled()){
        wm.setWifiEnabled(true);
        
        
       }
      
       //开始扫描(扫描到一个无线信号,就会发出一个广播)
       wm.startScan();
    }
   
   private class MyReceiver extends BroadcastReceiver{
              @Override
              public void onReceive(Context context,Intent intent) {
                     //TODO Auto-generated method stub
                     Stringaction = intent.getAction();
                     if(action.equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)){
                            List<ScanResult> scanResults =wm.getScanResults();
                             
                           
                     }
              }
           
    }
   

Wifi所需权限

   <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>


传感器

传感器是一种物理装置或生物器官,能够探测、感受外界的信号、物理条件(如光、热、湿度)或化学组成(如烟雾),并将探知的信息传递给其他装置或器官。传感器是一种检测装置,能感受被测量的信息,并能将感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出。


传感器类型

1.方向传感器:指南针

2.加速度传感器:赛车游戏

3.光线传感器:智能手电筒

4.磁场传感器:罗盘

5.距离传感器:打电话的时候,靠近耳朵灭屏,方式误操作

6.温度传感器:体温计


步骤

1.得到SensorManager

2.得到Sensor

3.监听sensor的变化

4.获得数据


代码

public class Test_2_15_sensorActivity extends Activity {
    private ImageView imageView;
    private SensorEventListener sensorEventListener;
    private SensorManager sensorManager;
    private Sensor sensor;
    // 初始化角度
    float currentDegree = 0f;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        imageView = (ImageView)findViewById(R.id.iv_content);
        // 感应器使用时要屏幕常亮
        imageView.setKeepScreenOn(true);
        // 得到感应器
        sensorManager =
(SensorManager) getSystemService(Context.SENSOR_SERVICE);
      
        //获取方向传感器
        sensor=sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
        //传感器事件监听
        sensorEventListener = new  MySensorEventListener();      
            
        //绑定事件监听,游戏延迟,一般绝大多数的实时性较高的游戏都使用该级别
        sensorManager.registerListener(sensorEventListener, sensor, SensorManager.SENSOR_DELAY_GAME);
    }
   
private class MySensorEventListener implements SensorEventListener{
        
        @Override
        public voidonSensorChanged(SensorEvent event) {
            // TODO Auto-generated methodstub
            //获取角度数据
            float degree = event.values[0];
            
            //以指南针图像中心为轴逆时针旋转degree度
            RotateAnimation rotateAnimation= new RotateAnimation(
                    currentDegree, //起始角度
                    -degree,//旋转角度
                    Animation.RELATIVE_TO_SELF, //动画在X轴的参照物,这里是自身
                    0.5f,//动画在参照物X坐标的开始位置
                    Animation.RELATIVE_TO_SELF, //动画在Y轴参照物  
                    0.5f);//动画在参照物y坐标的开始位置
            //在200毫秒之内完成旋转动作
            rotateAnimation.setDuration(200);
            imageView.startAnimation(rotateAnimation);
            //保存旋转后的度数
            currentDegree = -degree;
        }
     
        
        // 精确度的改变
        @Override
        public void onAccuracyChanged(Sensorsensor, int accuracy) {
            // TODO Auto-generated methodstub
            
        }
      
    }
    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        //取消感应器
        sensorManager.unregisterListener(sensorEventListener);
    }
   
}

课后问题

1.如果使用wifi应该使用什么类?

WifiManager


2.Sensor是什么?

方向感应器


3.Sensor使用的步骤1 2 3 4

得到感应器管理器

得到感应器

监听感应器

得到数据



你可能感兴趣的:(ym——Android从零开始(30)(WIFI、传感器)(新))