PDA

View Full Version : احرای برنامه در Background بعد از boot سیستم



roomezonline
یک شنبه 16 تیر 1392, 05:15 صبح
سلام دوستان
من دارم یه برنامه مینویسم که شارژ باتری رو مانیتور میکنه و وقتی حد شارژ به حداقل یا حداکثر که در برنامه مشخص شده رسید الارم میده

حالا مشکل من اینه که میخوام

1. این برنامه بعد از ریبوت دوباره اتو استارت بشه
2. برنامه در بک گراند اجرا بمونه با زدن کلید back یا Ram Optimuser یا Killed task خارج نشه خلاصه در بک گراند اجرا باشه و وقتی به ست پوسنت مورد نظر برسه اجرا بشه

پیشاپیش سپاس

roomezonline
یک شنبه 16 تیر 1392, 16:47 عصر
دوستان واقعا کسی در این زمینه کار نکرده ؟ ___________________

rubiks.kde
یک شنبه 16 تیر 1392, 17:51 عصر
دوستان واقعا کسی در این زمینه کار نکرده ؟ ___________________

من با سرویس این کار رو کردم و نمونش توی نت زیاده ولی مشکلات داشت اونم خیلی

roomezonline
یک شنبه 16 تیر 1392, 17:55 عصر
من با سرویس این کار رو کردم و نمونش توی نت زیاده ولی مشکلات داشت اونم خیلی

lمرسی از توجهتون منم الان با سرویس این کارو کردم اما با Ram Optimized سرویس متوقف میشه من میخوام به محض توقف دوباره اجرا بشه یا اصلا کاربر نتونه توقفش بده در حالت غیر مستقیم جز اینکه بره تو برنامه و توقف سرویس بزنه

rubiks.kde
یک شنبه 16 تیر 1392, 19:08 عصر
lمرسی از توجهتون منم الان با سرویس این کارو کردم اما با Ram Optimized سرویس متوقف میشه من میخوام به محض توقف دوباره اجرا بشه یا اصلا کاربر نتونه توقفش بده در حالت غیر مستقیم جز اینکه بره تو برنامه و توقف سرویس بزنه

دقیقا مشکل من هم همین بود

roomezonline
یک شنبه 16 تیر 1392, 19:58 عصر
در نهایت چه باید کرد؟

rubiks.kde
یک شنبه 16 تیر 1392, 20:31 عصر
در نهایت چه باید کرد؟

من دقیقا همین سوال شما رو اینجا پرسیدم نتیجش هم هست میتونید ببینید ولی چون پروژه من خیلی جلو رفته بود نتونستم ازش استفاده کنم.

استفاده از سرویس (http://barnamenevis.org/showthread.php?404840-%D8%A7%D8%B4%DA%A9%D8%A7%D9%84-%D8%AF%D8%B1-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%B3%D8%B1%D9%88%DB%8C%D8%B3)

roomezonline
یک شنبه 16 تیر 1392, 21:03 عصر
من به مشکل برخوردم

ین کد سرویس منه

MyService.java



package com.batterylevel;

import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.media.MediaPlayer;
import android.os.IBinder;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;

public class MyService extends Service {


private static final String TAG = "MyService";
MediaPlayer player;

@Override
public IBinder onBind(Intent intent) {
return null;
}

@Override
public void onCreate() {
Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show();
Log.d(TAG, "onCreate");

player = MediaPlayer.create(this, R.raw.braincandy);
player.setLooping(false); // Set looping
}

@Override
public void onDestroy() {
Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show();
Log.d(TAG, "onDestroy");
player.stop();
}

@Override
public void onStart(Intent intent, int startid) {
loadPrefs();
Toast.makeText(this, "My Service Started" + contentTxt, Toast.LENGTH_LONG).show();
Log.d(TAG, "onStart");




}
}



من میخوام با این سرویس بجای توی قسمت Onstart میزان شارژ باتری رو مانیتور کنم


کد مانیتور کردن باتری


private BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent intent) {
// TODO Auto-generated method stub
int level = intent.getIntExtra("level", 0);
contentTxt.setText(String.valueOf(level));


// }

}
};




و این قسمت که باید در on creart باشه اما در این کلاس سرویس چیزی نیست



this.registerReceiver(this.mBatInfoReceiver,
new IntentFilter(Intent.ACTION_BATTERY_CHANGED));




من با این سرویس به راحتی اهنگ پخش میکنم

سوال : چطوری با این کدها بشه شارژ باتری رو مانیتور کرد

مرسی

abbasalim
یک شنبه 16 تیر 1392, 22:30 عصر
میدونم واسه ی این که به هیچ وجه بر نامتون قابل بستن نباشه باید داخل منیفست اون رو یه برنامه سیستمی خوده گوشی تعریف کنین ولی یادم نیس کدش چی بود ،لامصب از بس کنارش نکته و توجیه و اخطار زده بودن که از این روش استفاده نکنین خطرناکه و خوب نیس و ملت گناه دارن که اصلا جرات نکردم ببینم :افسرده:

rubiks.kde
یک شنبه 16 تیر 1392, 23:03 عصر
یه برنامه open source برای مانیتور کردن باطری پیدا کردم میتونید کدش رو برای کمک ببینید

اینجا (https://github.com/adrian-bl/bl-battstatus-android)

roomezonline
دوشنبه 17 تیر 1392, 08:48 صبح
سلام به شما
من با مانیتور کردن شارژ باطری مشکلی ندارم مشکل من لینه که نمیدونم چطوری این کد رو تو سرویس
فراخونی کنم

roomezonline
دوشنبه 17 تیر 1392, 08:50 صبح
لطفا طرز استفاده کد مانیتور کردن باطری رو در سرویس بگید. کدهای رودر بالا گذاشتم

roomezonline
دوشنبه 17 تیر 1392, 14:34 عصر
اقا بخدا انتظار سخته همچنان منتظر یاری دوستان هستم

ebrahim12
دوشنبه 17 تیر 1392, 17:37 عصر
البته گفته باشم حتما اون گزینه برای انتخاب روشن شدن سریع رو بذارید تا حقوق استفاده کننده رعایت بشه :D

یه ساعته دارم پست میذارم بعد از اکانت خارج میشه :| ... شرمنده پست قبلیم نیومده :|

roomezonline
دوشنبه 17 تیر 1392, 21:49 عصر
البته گفته باشم حتما اون گزینه برای انتخاب روشن شدن سریع رو بذارید تا حقوق استفاده کننده رعایت بشه :D

یه ساعته دارم پست میذارم بعد از اکانت خارج میشه :| ... شرمنده پست قبلیم نیومده :|


سلام دوست عزیز اون پست قبلیت چی بود و نمیخواهی دوباره بفرستیش

همچنان منتظر پاسخ نحوه استفاده کد باتری در سرویس هستم

roomezonline
دوشنبه 17 تیر 1392, 23:54 عصر
یه برنامه open source برای مانیتور کردن باطری پیدا کردم میتونید کدش رو برای کمک ببینید

اینجا (https://github.com/adrian-bl/bl-battstatus-android)


اقا با استفاده از کدهای که دادم میشه بجای پخش اهنگ باتری رو مانیتور کرد و مقدار شارژ فعلی رو دریافت کرد؟!!!!!!!!!!!!!

roomezonline
سه شنبه 18 تیر 1392, 00:08 صبح
خدمت دوستان خوبم عرض کنم بالاخره تلاشهام بی نتیجه نبود و حلش کرد

برای مانیتور کردم میزان شارژ در سرویس در قسمت oncreat این کد رو بنویسید



public void onCreate() {

//registerReceiver(BatInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = getApplicationContext().registerReceiver(null, ifilter);

// Are we charging / charged?
int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEV EL, -1);
bateria = String.valueOf(status);
}

ebrahim12
چهارشنبه 19 تیر 1392, 09:39 صبح
درسه و برای روشن کردن بعد از force close از timer استفاده کنید
در کل میتونید از timer استفاده کنید که تو زمان های مشخص چک کنه :D

حتی اگه برنامه crash بده بازم تو زمان مشخص دوباره باز میشه :D