Android - 如何根据传感器名称获取传感器详细信息?
Android - How to get sensor details based on sensor name?
我正在编写一个简单的应用程序作为练习 - 将设备上所有传感器的列表显示为 ListView,并在单击每个传感器时在新的 activity 中显示当前传感器 values/details ListView 中的传感器名称。
我的 ListView 工作正常,到目前为止可以将传感器名称传递给新的 activity。有没有办法使用这个传递的名称获取传感器详细信息?似乎我无法使用 putExtra() 将传感器本身传递给新的 activity。或者还有其他方法吗?
传感器列表activity:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_sensor_activity);
sensorListView = (ListView) findViewById(R.id.sensorlist);
sensorListView.setOnItemClickListener((AdapterView.OnItemClickListener) this); //allows each item in ListView to be clickable
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
sensorList = mSensorManager.getSensorList(Sensor.TYPE_ALL); //get list of sensors
ArrayList<String> sensorNames = new ArrayList<String>(); //list of sensor names
//iterate through list of sensors, get name of each and append to list of names
for(int i=0; i< sensorList.size(); i++) {
String sensor= sensorList.get(i).getName();
if(sensor == null || sensor.equals(""))
continue;
sensorNames.add(sensor);
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getBaseContext(), android.R.layout.simple_list_item_1, sensorNames);
sensorListView.setAdapter(adapter); //populate ListView with sensor names
}
@Override
public void onItemClick(AdapterView<?> adapter, View v, int position, long id ) {
Intent sensorDetails = new Intent(ListSensorActivity.this, SensorDetailActivity.class);
sensorDetails.putExtra("SENSOR_NAME", sensorList.get(position).getName()); //pass sensor name to detail activity
startActivity(sensorDetails);
}
** SensorDetail activity **
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sensor_detail);
sensorTitle = (TextView) findViewById(R.id.sensortitle);
manager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
Bundle extras = getIntent().getExtras();
sensorName = extras.getString("SENSOR_NAME");
sensorTitle.setText(sensorName);
}
将类型从传感器传递到第二个 activity,然后通过 SensorManager.getDefaultSensor(type)
请求 activity 中的传感器
请检查:
private SensorManager mSensorManager;
private Sensor sensorNames;
并在 Class
mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
sensorNames= mSensorManager.getDefaultSensor(Sensor.TYPE_ALL);
并根据位置传递列表中的值:
Intent intent= new Intent(this, SensorDetailActivity.class);
intent.putExtra("SENSOR_NAME", sensorNames.get(position).toString());
startActivity(intent);
如果您仍然没有得到解决方案,请告诉我。:)
我正在编写一个简单的应用程序作为练习 - 将设备上所有传感器的列表显示为 ListView,并在单击每个传感器时在新的 activity 中显示当前传感器 values/details ListView 中的传感器名称。
我的 ListView 工作正常,到目前为止可以将传感器名称传递给新的 activity。有没有办法使用这个传递的名称获取传感器详细信息?似乎我无法使用 putExtra() 将传感器本身传递给新的 activity。或者还有其他方法吗?
传感器列表activity:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_sensor_activity);
sensorListView = (ListView) findViewById(R.id.sensorlist);
sensorListView.setOnItemClickListener((AdapterView.OnItemClickListener) this); //allows each item in ListView to be clickable
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
sensorList = mSensorManager.getSensorList(Sensor.TYPE_ALL); //get list of sensors
ArrayList<String> sensorNames = new ArrayList<String>(); //list of sensor names
//iterate through list of sensors, get name of each and append to list of names
for(int i=0; i< sensorList.size(); i++) {
String sensor= sensorList.get(i).getName();
if(sensor == null || sensor.equals(""))
continue;
sensorNames.add(sensor);
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getBaseContext(), android.R.layout.simple_list_item_1, sensorNames);
sensorListView.setAdapter(adapter); //populate ListView with sensor names
}
@Override
public void onItemClick(AdapterView<?> adapter, View v, int position, long id ) {
Intent sensorDetails = new Intent(ListSensorActivity.this, SensorDetailActivity.class);
sensorDetails.putExtra("SENSOR_NAME", sensorList.get(position).getName()); //pass sensor name to detail activity
startActivity(sensorDetails);
}
** SensorDetail activity **
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sensor_detail);
sensorTitle = (TextView) findViewById(R.id.sensortitle);
manager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
Bundle extras = getIntent().getExtras();
sensorName = extras.getString("SENSOR_NAME");
sensorTitle.setText(sensorName);
}
将类型从传感器传递到第二个 activity,然后通过 SensorManager.getDefaultSensor(type)
请求 activity 中的传感器请检查:
private SensorManager mSensorManager;
private Sensor sensorNames;
并在 Class
mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
sensorNames= mSensorManager.getDefaultSensor(Sensor.TYPE_ALL);
并根据位置传递列表中的值:
Intent intent= new Intent(this, SensorDetailActivity.class);
intent.putExtra("SENSOR_NAME", sensorNames.get(position).toString());
startActivity(intent);
如果您仍然没有得到解决方案,请告诉我。:)