سؤال

أحاول عرض قائمة بأجهزة الاستشعار المتاحة ، لكن الأمر كما لو لم يكن هناك!
كنت أفكر في أنه كان بسبب المحاكي ، لكنني جربته على الهاتف والنتيجة هي نفسها.

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);
    }
}
هل كانت مفيدة؟

المحلول

ثابت SensorManager.SENSOR_ALL تم إهماله ولا يبدو أنه يعمل بعد الآن.

الاستعلام عن قائمة المستشعر مع Sensor.TYPE_ALL بدلاً من ذلك وينبغي أن يعمل (يحصل المحاكي الخاص بي على "مقياس تسارع الذهب ذو 3 محاور").

نصائح أخرى

يمكنك تجربة هذا الرمز:-

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));
}
}

فقط ضع طريقة عرض قائمة في تخطيط XML الخاص بك.

يمكنك محاولة سرد المستشعرات على النحو التالي:-

سلسلة capp_folder = مسار المجلد الخاص بك

String csensor_file = اسم ملفك

// 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();

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

// ملف إلاخراج

{sensor name = "مستشعر مقياس التسارع Bosch" ، البائع = "Bosch sensortec gmbh" ، الإصدار = 2 ، النوع = 1 ، maxRange = 156.88 ، القرار = 5.984497e-4 ، power = 0.13 ، mindelay = 10000}

{sensor name = "Bosch Magnetic Field Sensor" ، Pendor = "Bosch Sensortec GmbH" ، الإصدار = 2 ، النوع = 2 ، MaxRange = 1600.0 ، الدقة = 0.3 ، Power = 0.5 ، Mindelay = 40000}

{sensor name = "Bosch Direction Sensor" ، Pendor = "Bosch Sensortec GmbH" ، الإصدار = 2 ، النوع = 3 ، maxRange = 360.0 ، الدقة = 1.0 ، Power = 0.63 ، Mindelay = 5000}

{sensor name = "bosch gyroscope sensor" ، Pendor = "Bosch sensortec gmbh" ، الإصدار = 2 ، النوع = 4 ، maxrange = 2500.0 ، الدقة = 0.0038146973 ، power = 5.0 ، mindelay = 5000}

{sensor name = "Bosch Gravity Sensor" ، Pendor = "Bosch Sensortec GmbH" ، الإصدار = 2 ، النوع = 9 ، maxRange = 19.61 ، القرار = 5.984497e-4 ، Power = 5.63 ، Mindelay = 5000}

{sensor name = "مستشعر التسارع الخطي Bosch" ، البائع = "Bosch sensortec gmbh" ، الإصدار = 2 ، النوع = 10 ، maxRange = 19.61 ، القرار = 5.984497e-4 ، power = 5.63 ، mindelay = 5000}

{sensor name = "مستشعر متجه الدوران Bosch" ، البائع = "Bosch sensortec gmbh" ، الإصدار = 2 ، النوع = 11 ، maxrange = 1.0 ، الدقة = 5.9604645e-8 ، الطاقة = 5.63 ، mindelay = 5000}

{sensor name = "Bosch Magnetic Field غير المعياري" ، البائع = "Bosch Sensortec GmbH" ، الإصدار = 2 ، النوع = 14 ، MaxRange = 1600.0 ، الدقة = 0.3 ، Power = 0.5 ، Mindelay = 40000}

{sensor name = "Bosch Game Rotation Vector Sensor" ، Pondor = "Bosch Sensortec GmbH" ، الإصدار = 2 ، النوع = 15 ، maxrange = 1.0 ، الدقة = 5.9604645e-8 ، Power = 5.63 ، Mindelay = 5000}

{sensor name = "Bosch gyroscope unsalated Sensor" ، Pondor = "Bosch Sensortec GmbH" ، الإصدار = 2 ، النوع = 16 ، MaxRange = 2500.0 ، الدقة = 0.0038146973 ، Power = 5.0 ، Mindelay = 5000}

{sensor name = "مستشعر متجه الدوران Geomagnetic Bosch" ، البائع = "Bosch Sensortec GmbH" ، الإصدار = 2 ، النوع = 20 ، MaxRange = 1.0 ، الدقة = 5.9604645e-8 ، Power = 5.63 ، Mindelay = 5000}

{sensor name = "Light" ، Pendor = "Mtk" ، الإصدار = 1 ، النوع = 5 ، maxRange = 10240.0 ، الدقة = 1.0 ، الطاقة = 0.13 ، MindeLay = 0}

{sensor name = "proximity" ، pendor = "mtk" ، الإصدار = 1 ، النوع = 8 ، maxRange = 1.0 ، الدقة = 1.0 ، power = 0.13 ، mindelay = 0}

{sensor name = "harm_motion" ، pendor = "mtk" ، الإصدار = 1 ، النوع = 17 ، maxRange = 85.0 ، الدقة = 0.1 ، power = 0.5 ، mindelay = -1}

يعطي GetSensorList (نوع int) فئة SensorManager قائمة بأجهزة الاستشعار ==>. (للحصول على قائمة المستشعرات المتاحة من نوع معين.)

استخدم sensor.type_all للحصول على جميع المستشعرات. قم بإجراء مكالمات متعددة للحصول على أجهزة استشعار من أنواع مختلفة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top