我有一个Android测试项目,它将加速计信息显示在屏幕上。它在真实设备上运行良好。但是,当我在Bluestacks上运行并按下箭头键时,我就得到了
x:0,y:0,z:9,8
它永远不会改变。我做了调试但没看错。
为什么我的代码无法在BlueStacks上运行?
这是我的主要课程:
public class MainActivity extends Activity implements SensorEventListener {
TextView textView;
StringBuilder builder = new StringBuilder();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = new TextView(this);
this.setContentView(textView);
SensorManager manager = (SensorManager) this
.getSystemService(Context.SENSOR_SERVICE);
if (manager.getSensorList(Sensor.TYPE_ACCELEROMETER).size() == 0)
textView.setText("No Accelerometer installed");
else {
Sensor accelerometer = manager.getSensorList(
Sensor.TYPE_ACCELEROMETER).get(0);
if (!manager.registerListener(this, accelerometer,
SensorManager.SENSOR_DELAY_GAME))
textView.setText("could not register sensor listener");
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
@Override
public void onSensorChanged(SensorEvent event) {
builder.setLength(0);
builder.append("x: ");
builder.append(event.values[0]);
builder.append(" , y: ");
builder.append(event.values[1]);
builder.append(" , z: ");
builder.append(event.values[2]);
textView.setText(builder.toString());
}
}
编辑:我认识到Bluestacks是一个模拟器,所以它没有真正的加速度计。但是,有加速度计支持(参见文章here),它通过将按键解释为模拟运动的指令来工作。我自己也看过这个作品,因为我在BlueStacks上玩了“Air Penguin”游戏,方法是点击箭头键,这会导致加速度计值发生变化。那么按键在我的应用中怎么没有效果呢?我的代码中是否缺少某些内容?