Я создаю приложение для оповещения о скорости, и я застрял на одном этапе создания. У меня скорость отображается правильно, но установленная скорость, при которой мне нужно отключить оповещение, не работает. Я думаю, что разместил код не в том месте. мой код:
if( insetSpeed > intspeed);
{
Toast.makeText(speedalert.this, "Over Speed!!", Toast.LENGTH_SHORT).show();
}
Все переменные были преобразованы в один и тот же тип int.
Требуется только размещение приведенного выше кода.
Большое спасибо: D
ИЗМЕНИТЬ
public void updateSpeed(Location location)
{
float gpsSpeed = 0;
if( location!=null )
{
gpsSpeed = ((location.getSpeed()*3600)/1000);
}
intspeed = (int)gpsSpeed;
TextView intSpeedTV = (TextView) findViewById(R.id.intSpeedTV);
intSpeedTV.setText(String.valueOf(strCurrentSpeed));
TextView SpeedTextView = (TextView) this.findViewById(R.id.SpeedTextView);
SpeedTextView.setText(String.valueOf(intspeed))
}
public void onLocationChanged(Location location)
{
if (location != null)
{
Location myLocation = new Location(location);
this.updateSpeed(myLocation);
}
}
public void speedAlert(Location location)
{
if( intspeed >= 2) ;
{
Toast.makeText(SpeedAlert.this, "Over Speed!!", Toast.LENGTH_SHORT).show();
}
}
Изменить 2
Переписал код:
public class SpeedAlert extends Activity
{
NumberPicker np;
int setSpeed;
String strsetSpeed;
int intspeed;
int intsetSpeed;
LocationListener LocLis;
LocationManager LocMan;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
this.setContentView(R.layout.speedalertmain);
LocMan = (LocationManager) getSystemService (Context.LOCATION_SERVICE);
LocLis = new GetSpeeed();
LocMan.requestLocationUpdates(LocationManager.GPS_PROVIDER, 100, 0, LocLis);
np = (NumberPicker) findViewById(R.id.numberPicker1);
final TextView setSpeedTV = (TextView) findViewById(R.id.setSpeedTV);
np.setMinValue(0);
np.setMaxValue(160);
np.setWrapSelectorWheel(true);
np.setOnValueChangedListener(new OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
// TODO Auto-generated method stub
String New = "";
setSpeedTV.setText(New.concat(String.valueOf(newVal)));
newVal = setSpeed;
intsetSpeed = Integer.valueOf(setSpeed);
}
});
}
private class GetSpeeed implements LocationListener
{
public void onLocationChanged(Location location) {
if(location!=null) {
float gpsSpeed = 0;
if(location.hasSpeed()){
gpsSpeed = ((location.getSpeed()*3600)/1000);
intspeed = (int)gpsSpeed;
TextView SpeedTextView = (TextView) findViewById(R.id.SpeedTextView);
SpeedTextView.setText(String.valueOf(intspeed));
TextView intSpeedTV = (TextView) findViewById(R.id.intSpeedTV);
intSpeedTV.setText(String.valueOf(intspeed));
if( intspeed >= intsetSpeed) ;
{
Toast.makeText(SpeedAlert.this, "Over Speed!!", Toast.LENGTH_SHORT).show();
}
}
}
}
}
}
1 ответ
Судя по опубликованному вами коду, я считаю, что вы не звоните своему public void speedAlert(Location location)
. Я предлагаю вам обновить свой public void onLocationChanged(Location location)
следующим образом:
public void onLocationChanged(Location location)
{
if (location != null)
{
// Do you have to create a new Location instance?
Location myLocation = new Location(location);
this.updateSpeed(myLocation);
this.speedAlert(myLocation);
}
}
Надеюсь, это поможет.
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.
speedAlert
нужен объект Location? И почему методonLocationChanged
создает новый объект с именемmyLocation
, а не может он просто вызватьupdateSpeed(location)
(иspeedAlert()
)? Кроме того, подумайте о единицах скорости раньше, чем позже.