我对此很新,但有人告诉我,我可以在这里得到很好的帮助。我和朋友正在玩创建Android应用程序(使用ADT)
以下是我们尝试制作程序的方法:在活动中,用户在加速度计上设置X轴和Y轴的阈值。当用户点击“开始”按钮时,将调用startService并启动TiltService。
TiltService旨在无需用户互动即可在手机后台运行。 TiltService不断将阈值与加速度计值进行比较,如果关闭则会振动。
我的问题是我似乎无法正确获取putExtra()数据。我在我的服务中覆盖了onStartCommand,但是当我将getExtras()保存到一个包时,我收到了“无法访问的代码”消息。
这是相关代码(我可以发布整件事,只是不想堵塞页面)
TiltMeterActivity
private Intent dataIntent = null;
private float FORWARD_THRESHOLD = 4f;
private float BACKWARD_THRESHOLD = -3f;
private float UPWARD_THRESHOLD = 3f;
private float DOWNWARD_THRESHOLD = -3f;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
bstart = (Button)findViewById(R.id.btnStart);
dataIntent = new Intent();
dataIntent.setClass(TiltMeterActivity.this, TiltService.class);
dataIntent.putExtra("fowardThreshold", FORWARD_THRESHOLD);
dataIntent.putExtra("backwardThreshold", FORWARD_THRESHOLD);
dataIntent.putExtra("upwardThreshold", UPWARD_THRESHOLD);
dataIntent.putExtra("downwardThreshold", DOWNWARD_THRESHOLD);
bStart.setOnclickListener(new View.OnClickListener() {
public void onClick(View v) {
startService(dataIntent);
}
});
}
TiltService
private Bundle thresholdData = new Bundle();
private float Z_FORWARD_THRESHOLD = 0f;
private float Z_BACKWARD_THRESHOLD = 0f;
private float Y_UPWARD_THRESHOLD = 0f;
private float Y_DOWNWARD_THRESHOLD = 0f;
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO Auto-generated method stub
return super.onStartCommand(intent, flags, startId);
thresholdData = intent.getExtras(); // The problem area (Eclipse says this is unreachable code)
Z_FORWARD_THRESHOLD = thresholdData.getFloat("forwardThreshold");
Z_BACKWARD_THRESHOLD = thresholdData.getFloat("backwardThreshold");
Y_UPWARD_THRESHOLD = thresholdData.getFloat("upwardThreshold");
Y_DOWNWARD_THRESHOLD = thresholdData.getFloat("downwardThreshold");
return START_STICKY;
}
我认为我理解Intents如何传递数据的基础,但我想我没有。我错过了什么?谢谢你的帮助
答案 0 :(得分:3)
将return
语句放在函数的最后一行onstartcommand
中。
答案 1 :(得分:1)
我认为您应该使用thresholdData.getString(forwardThreshold)
来获取数据。