Android之傳S
阿新 • • 發佈:2018-12-12
先添上一個計算手機中的感測器的程式碼
public class SensorDetectorActivity extends Activity { //SensorManager物件引用 SensorManager mySensorManager; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //設定為豎屏模式 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); //獲得SensorManager物件 mySensorManager = (SensorManager)getSystemService(SENSOR_SERVICE); List<Sensor> ll=mySensorManager.getSensorList(Sensor.TYPE_ALL); StringBuilder sb=new StringBuilder(); sb.append("感測器總數:"); sb.append(ll.size()); sb.append("\n==========================\n"); for(Sensor s:ll) { sb.append("編號:"); sb.append(s.getType()); sb.append("\n"); sb.append("名稱:"); sb.append(s.getName()); sb.append("\n"); sb.append("工作電流:"); sb.append(s.getPower()); sb.append("mA\n"); sb.append("解析度:"); sb.append(s.getResolution()); sb.append("\n"); sb.append("最大測量範圍:"); sb.append(s.getMaximumRange()); sb.append("\n"); sb.append("供應商:"); sb.append(s.getVendor()); sb.append("\n"); sb.append("版本號:"); sb.append(s.getVersion()); sb.append("\n==========================\n"); } setContentView(R.layout.main); EditText et=(EditText)this.findViewById(R.id.EditText01); et.setKeyListener(null); et.setText(sb.toString()); } }
下面逐步分析 1.建立SensorManager的物件引用 SensorManager主要是通過它來訪問裝置的感測器,同時SensorManager也提供了方法 2.設定豎屏模式 方案1 :在manifests.xml中配置
<activity
android:name=".SketchpadActivity"
android:screenOrientation="landscape"/><!--讓該Activity總是顯示為橫屏-->
screenOrientations屬性共有7中可選值(常量定義在 android.content.pm.ActivityInfo類中 ) landscape:橫屏(風景照) ,顯示時寬度大於高度; portrait:豎屏 (肖像照) , 顯示時 高 度大於 寬 度 ; user:使用者當前的首選方向; behind:繼承Activity堆疊中當前Activity下面的那個Activity的方向; sensor:由物理感應器決定顯示方向,它取決於使用者如何持有裝置,當 裝置 被旋轉時方向會隨之變化——在橫屏與豎屏之間; nosensor:忽略物理感應器——即顯示方向與物理感應器無關,不管使用者如何旋轉裝置顯示方向都不會隨著改變("unspecified"設定除外); unspecified:未指定,此為預設值,由Android系統自己選擇適當的方向,選擇策略視具體裝置的配置情況而定,因此不同的裝置會有不同的方向選擇;
方案二:使用setRequestedOrientation