2010-05-18 43 views
17

Tôi đang cố gắng hiển thị danh sách các cảm biến có sẵn nhưng có vẻ như không có!
Tôi đã nghĩ rằng đó là do giả lập, nhưng tôi đã thử nó trên điện thoại và kết quả là như nhau.Hiển thị Danh sách cảm biến Android

private SensorManager mSensorManager; 
TextView mSensorsTot,mSensorAvailables; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    // Get the texts fields of the layout and setup to invisible 
    mSensorsTot = (TextView) findViewById(R.id.sensoritot); 
    mSensorAvailables = (TextView) findViewById(R.id.sensoridisponibili); 

    // Get the SensorManager 
    mSensorManager= (SensorManager) getSystemService(SENSOR_SERVICE); 

    // List of Sensors Available 
    List<Sensor> msensorList = mSensorManager.getSensorList(SensorManager.SENSOR_ALL); 

    // Print how may Sensors are there 
    mSensorsTot.setText(msensorList.size()+" "+this.getString(R.string.sensors)+"!"); 

    // Print each Sensor available using sSensList as the String to be printed 
    String sSensList = new String(""); 
    Sensor tmp; 
    int x,i; 
    for (i=0;i<msensorList.size();i++){ 
    tmp = msensorList.get(i); 
    sSensList = " "+sSensList+tmp.getName(); // Add the sensor name to the string of sensors available 
    } 
    // if there are sensors available show the list 
    if (i>0){ 
    sSensList = getString(R.string.sensors)+":"+sSensList; 
    mSensorAvailables.setText(sSensList); 
    } 
} 

Trả lời

24

Hằng số SensorManager.SENSOR_ALL không được dùng nữa và dường như không hoạt động nữa.

Truy vấn danh sách cảm biến với Sensor.TYPE_ALL thay vào đó và nó sẽ hoạt động (trình giả lập của tôi trả về "Máy gia tốc kế 3 trục Goldfish").

+0

Hoạt động, hãy bật lên! Cảm ơn của – Skatephone

0

getSensorList (loại int) của lớp SensorManager cung cấp danh sách các cảm biến ==> Danh sách. (Để nhận danh sách các cảm biến có sẵn của một loại nhất định.)

Sử dụng cảm biến.TYPE_ALL để nhận tất cả các cảm biến. Thực hiện nhiều cuộc gọi để nhận các cảm biến thuộc các loại khác nhau.

4

Bạn có thể thử mã này: -

package com.example.sensor; 

import java.util.List; 

import android.content.Context; 
import android.hardware.Sensor; 
import android.hardware.SensorManager; 
import android.os.Bundle; 
import android.support.v7.app.ActionBarActivity; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 

public class MainActivity extends ActionBarActivity { 

SensorManager smm; 
List<Sensor> sensor; 
ListView lv; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    smm = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 
    lv = (ListView) findViewById (R.id.listView1); 
    sensor = smm.getSensorList(Sensor.TYPE_ALL); 
    lv.setAdapter(new ArrayAdapter<Sensor>(this, android.R.layout.simple_list_item_1, sensor)); 
} 
} 

Chỉ cần đặt một cái nhìn danh sách trong cách bố trí xml của bạn.

1

Bạn có thể thử liệt kê các cảm biến như sau: -

Chuỗi cAPP_FOLDER = Đường dẫn của thư mục của bạn

Chuỗi cSENSOR_FILE = Tên của tập tin của bạn

// Create a file to export the sensor info. 
File fp = new File(cAPP_FOLDER + cSENSOR_FILE); 
fp.createNewFile(); 
PrintWriter pw = new PrintWriter(new FileWriter(fp, true)); 

SensorManager oSM = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE); 
List<Sensor> sensorsList = oSM.getSensorList(Sensor.TYPE_ALL); 
for (Sensor s : sensorsList) { 
    pw.write(s.toString() + "\n"); 
} 
pw.close(); 

/////// ////////////////////////////////////////////////// /////////////////////

// TẬP ĐOÀN ĐẦU RA

{Sensor name = "Cảm biến gia tốc BOSCH", nhà cung cấp = "Bosch Sensortec GmbH", phiên bản = 2, loại = 1, maxRange = 156,88, độ phân giải = 5.984497E-4, công suất = 0,13, minDelay = 10000}

{Sensor name = "Cảm biến từ trường BOSCH", nhà cung cấp = "Bosch Sensortec GmbH", phiên bản = 2, loại = 2, maxRange = 1600.0, độ phân giải = 0.3, công suất = 0.5, minDelay = 40000}

{Sensor name = "Cảm biến định hướng BOSCH", nhà cung cấp = "Bosch Sensortec GmbH", phiên bản = 2, loại = 3, maxRange = 360.0, độ phân giải = 1.0, công suất = 0.63, minDelay = 5000}

{Sensor name = "BOSCH Cảm biến con quay hồi chuyển ", nhà cung cấp =" Bosch Sensortec GmbH ", phiên bản = 2, loại = 4, maxRange = 2500.0, độ phân giải = 0.003814 6973, power = 5.0, minDelay = 5000}

{Sensor name = "BOSCH Cảm biến trọng lực", nhà cung cấp = "Bosch Sensortec GmbH", phiên bản = 2, loại = 9, maxRange = 19.61, độ phân giải = 5.984497E-4 , power = 5.63, minDelay = 5000}

{Sensor name = "BOSCH cảm biến gia tốc tuyến tính", vendor = "Bosch Sensortec GmbH", phiên bản = 2, loại = 10, maxRange = 19.61, độ phân giải = 5.984497E-4 , power = 5.63, minDelay = 5000}

{Sensor name = "Cảm biến Vector xoay vòng BOSCH", nhà cung cấp = "Bosch Sensortec GmbH", phiên bản = 2, loại = 11, maxRange = 1.0, độ phân giải = 5.9604645E-8 , power = 5.63, minDelay = 5000}

{Sensor name = "BOSCH Cảm biến không hiệu chỉnh từ trường", vendor = "Bosch Sensortec GmbH", phiên bản = 2, loại = 14, maxRange = 1600.0, độ phân giải = 0,3, công suất = 0,5, minDelay = 40000}

{Sensor name = "BOSCH Game Vector cảm biến quay vòng", nhà cung cấp = "Bosch Sensortec GmbH", phiên bản = 2, loại = 15, maxRange = 1.0, độ phân giải = 5.9604645E-8, công suất = 5.63, minDelay = 5000}

{Sensor name = "BOSCH Gyroscope Unrecibrated Sensor", vendor = "Bosch Sensortec GmbH", phiên bản = 2, loại = 16, maxRange = 2500.0, độ phân giải = 0.0038146973, công suất = 5.0, minDelay = 5000}

{Sensor name = "BOSCH cảm biến Vector quay từ trường", phiên bản = 2, loại = 20, maxRange = 1.0, độ phân giải = 5.9604645E-8, công suất = 5.63, minDelay = 5000}

{Sensor name = "LIGHT", nhà cung cấp = "MTK", phiên bản = 1, loại = 5, maxRange = 10240.0, độ phân giải = 1.0, công suất = 0.13, minDelay = 0}

{Sensor name = "PROXIMITY ", vendor =" MTK ", phiên bản = 1, loại = 8, maxRange = 1.0, độ phân giải = 1.0, công suất = 0.13, minDelay = 0}

{Sensor name =" SIGNIFICANT_MOTION ", vendor =" MTK ", phiên bản = 1, loại = 17, maxRange = 85.0, độ phân giải = 0,1, công suất = 0,5, minDelay = -1}

+0

Trong khi đoạn mã này được chào đón, và có thể cung cấp một số trợ giúp, nó sẽ được [cải thiện rất nhiều nếu nó bao gồm một lời giải thích] (// meta.stackexchange.com/q/114762) của * how * và * why * this giải quyết vấn đề. Hãy nhớ rằng bạn đang trả lời câu hỏi cho độc giả trong tương lai, không chỉ là người hỏi ngay bây giờ! Vui lòng [sửa] câu trả lời của bạn để thêm giải thích và đưa ra chỉ dẫn về những giới hạn và giả định được áp dụng. –

Các vấn đề liên quan