بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
ارسال اطلاعات توسط سنسور، از سرویس به اکتیویتی
سلام
داخل کلاس G یک متغیر داریم به اسم txtDescription از جنس اینت، که یک عدد ساده هست.
یک سرویس درست کردیم که در بکگراند اجرا میشه و خالیه فعلا
چکار کنیم تا بتونم این متغیر رو لحظه به لحظه از دستورات داخل سرویس آپدیت کنیم؟
مثلا فکر کنید میخوایم از طریق سنسور پروکسیمیتی بگیم که هربار مقدار سنسور برابر با صفر شد، یک عدد به txtDescription اضافه کن.
و این دستور همینطوری در بکگراند فعال باشه.
با تشکر.
+1
0
این لینک را ببنید و کد ها را تست کنید اگر جواب داد در سرویس بزارین و مقدار را با شرط اضافه کنید لینک http://stackoverflow.com/questions/22953671/how-to-controlandroid-proximity-sensor
(10 سال پیش)
برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال
alfredo
10 سال پیش
+1
0
دوستان من کماکان درگیر این موضوع هستم. این کد رو برای MyService پیدا کردم ولی دوتا ارور داره که نمیتونم استفاده کنم. نظرتون چیه ؟
package alfredo.uzumaki.app;
import android.app.Service;
import android.content.Intent;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.IBinder;
import android.widget.Toast;
public class MyService extends Service implements SensorEventListener {
Sensor proxSensor;
SensorManager sm;
@Override
public void onCreate() {//onCreat shouldn't be used for sensor u should use onStartCommand
Toast.makeText(this, "Service Created", Toast.LENGTH_SHORT).show();
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
//here u should use the following code otherwise your sensor will be crazy
if (event.values[0] == 0) {
Toast.makeText(this, "Sensor Working", Toast.LENGTH_SHORT).show();
Intent panel = new Intent(this, Testnumber1000Activity.class);
startActivity(panel);
}
}
@Override
public void onDestroy() {//here u should unregister sensor
Toast.makeText(this, "Service Stopped", Toast.LENGTH_LONG).show();
sm.unregisterListener(this);
}
@Override
//here u should register sensor and write onStartCommand not onStart
public int onStartCommand(Intent intent, int flags, int startId) {
Toast.makeText(this, "Service Started", Toast.LENGTH_SHORT).show();
sm = (SensorManager) getSystemService(SENSOR_SERVICE);
proxSensor = sm.getDefaultSensor(Sensor.TYPE_PROXIMITY);
sm.registerListener(this, proxSensor, SensorManager.SENSOR_DELAY_NORMAL);
//here u should make your service foreground so it will keep working even if app closed
NotificationManager mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Intent bIntent = new Intent(MyService.this, Testnumber1000Activity.class);
PendingIntent pbIntent = PendingIntent.getActivity(MyService.this, 0, bIntent, 0);
NotificationCompat.Builder bBuilder = <==== این خط اون کلمه اولش ارور میده که میگه لایبراریش موجود نیست
new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("Title")
.setContentText("Subtitle")
.setAutoCancel(true)
.setOngoing(true)
.setContentIntent(pbIntent);
barNotif = bBuilder.build(); <------------- barNotif cannot be resolved to a variable این هم ارور این خط
this.startForeground(1, barNotif);
//then you should return sticky
return Service.START_STICKY;
}
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .