在android.googlesource.com上测试了重要运动样本,以了解有关此触发传感器的更多信息。不幸的是,传感器没有触发。 我做错了什么?
代码狙击
class TriggerListener extends TriggerEventListener {
private Context mContext;
private TextView mTextView;
TriggerListener(Context context, TextView textView) {
mContext = context;
mTextView = textView;
}
@Override
public void onTrigger(TriggerEvent event) {
if (event.values[0] == 1) {
mTextView.append(mContext.getString(R.string.sig_motion) + "\n");
mTextView.append(mContext.getString(R.string.sig_motion_auto_disabled) + "\n");
}
}
}
public class MainActivity extends AppCompatActivity {
private SensorManager mSensorManager;
private Sensor mSigMotion;
private TriggerListener mListener;
private TextView mTextView;
@Override
protected void onPause() {
super.onPause();
if (mSigMotion != null) mSensorManager.cancelTriggerSensor(mListener, mSigMotion);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
mSigMotion = mSensorManager.getDefaultSensor(Sensor.TYPE_SIGNIFICANT_MOTION);
mTextView = (TextView)findViewById(R.id.text);
mListener = new TriggerListener(this, mTextView);
if (mSigMotion == null) {
mTextView.append(getString(R.string.no_sig_motion) + "\n");
}
}
感谢您的帮助。
答案 0 :(得分:0)
我遇到了同样的问题,我发现了
mSensorManager.getDefaultSensor(Sensor.TYPE_SIGNIFICANT_MOTION);
返回空值。 因此,设备(或虚拟设备)中可能没有重要的运动传感器。在示例中的以下代码中
@Override
protected void onResume() {
super.onResume();
if (mSigMotion != null && mSensorManager.requestTriggerSensor(mListener, mSigMotion))
mTextView.append(getString(R.string.sig_motion_enabled) + "\n");
}
mSensorManager.requestTriggerSensor(mListener, mSigMotion))
从未执行。