رفتن به مطلب

کتابخانه PNBroadcastReceiver - دریافت رویدادهای دستگاه اندروید با قابلیت استخراج اطلاعات اکشنها


پژمان نیکروان

ارسال‌های توصیه شده

@,

 

مهندس واقعا عالی اوکی شد کار برنامم :DD:  .این ینی 50 درصد موفق شدم.50 درصد بقیه راه اندازی اپ کامپت و متریاله که برا اونم تاپیک خواهم زد. :malih:  :wacko1:

یه سوال دیگه.الان من بخوام چندتا رسیور درست کنم باید چنتا متغیر از نوع برادکست رسیور تعریف کنم یا فقط با همون اولی میشه به چنتا اکشن گوش داد؟ :fekr:

ممنون میشم اینم راهنمایی کنید   :girl_blush:  

 

خیر باید برای هر اکشن یه برادکست جدا تعریف کنید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • پاسخ 48
  • ایجاد شده
  • آخرین پاسخ
یه سوال دیگه.الان من بخوام چندتا رسیور درست کنم باید چنتا متغیر از نوع برادکست رسیور تعریف کنم یا فقط با همون اولی میشه به چنتا اکشن گوش داد؟ :fekr:

نمیدونم من اشتباه میکنم یا امین :DD: :DD:

نیازی به تعریف چند تا تغیر نیست، کافیه فقط اکشن هارو اضافه کنید، موقع دریافت هم شرط بذارید و اکشن هارو ازهم مجزا کنید:

Sub pn_OnReceive(Action As String,keys() As String,Data As Object)
	If Action.Contains("SMS_CB_RECEIVED") Then
		'...
	Else if Action.Contains("BATTRY_CHANGED") Then
		'...
	End If
End Sub

کسی نیست به این سوالم جواب بده؟؟؟

تو این تاپیک در مورد سوال شما بحث شده، مطالعه بفرمائید.

http://answercenter.ir/topic/9266-%D8%AA%D8%B4%D8%AE%DB%8C%D8%B5-%D8%A8%D8%A7%D8%B2-%D8%B4%D8%AF%D9%86-%D8%A8%D8%AE%D8%B4%DB%8C-%D8%AE%D8%A7%D8%B5-%D8%A7%D8%B2-%D8%AA%D9%86%D8%B8%DB%8C%D9%85%D8%A7%D8%AA-%DA%AF%D9%88%D8%B4%DB%8C/

البته اونجا با کتابخانه BroadCastReceiver خود بیسیک کار شده.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 3 هفته بعد...

اصلا کلا میشه با این کتابخانه کاری کرد ک وقتی مثلا کاربر میخواد برنامه رو حذف کنه ازش رمزی ک من تعیین کردم رو بخواد ؟؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

اصلا کلا میشه با این کتابخانه کاری کرد ک وقتی مثلا کاربر میخواد برنامه رو حذف کنه ازش رمزی ک من تعیین کردم رو بخواد ؟؟

سلام خیر.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 2 هفته بعد...

شارژ باطری استاد

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

الان چون تاپیک بالا بود دیدم.

 

یک کدی به این شکل داخل سورس اطلاعات باتری که همراه کتابخانه بود داخل رویداد OnRecive هست:

		Dim level As Int=intent1.GetExtra("level") 'مقدار شارژ رو دریافت کردیم
		If level<>leveltemp Then 'هروقت شارژ گوشی یک درصد کم یا زیاد شد مسیج بده
			ToastMessageShow("شارژ گوشی: "&level&"%",True)
			leveltemp=level
	
		End If

اینو داخل شرط اضافه کنید:

		Dim level As Int=intent1.GetExtra("level") 'مقدار شارژ رو دریافت کردیم
		If level<>leveltemp Then 'هروقت شارژ گوشی یک درصد کم یا زیاد شد مسیج بده
			ToastMessageShow("شارژ گوشی: "&level&"%",True)
			leveltemp=level
			
			If level=100 Then
					ToastMessageShow("شارژ صد در صد شد.",True)
			End If
		
		End If
لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 3 هفته بعد...
در در 1395/05/19, 23:11:45، پژمان نیکروان گفته است :

چ

اقا پژمان درصورت بسته شدن سرویس هم کار میکنه ؟ 

چون میخوام برای باز نگه داشتن سرویس ازش استفاده کنم :(

لینک ارسال
به اشتراک گذاری در سایت های دیگر

استاد پژمان ،

بحث ما چند روزی است که بالا گرفته و تا الان برطرف نشده...

بسته شدن کامل سرویس و برنامه و عدم فراخوانی رویداد pn_OnReceive.

لینک تاپیک راه حل جلوگیری از بسته شدن سرویس

لطفا اگر راه حلی دارید که باعث میشه سرویس اصلا بسته نشود بیان کنید (البته بدون استفاده از نوتیفیکیشن ثابت-چون نوتیفیکیشن باید همیشه در حال اجرا باشه تا سرویس بسته نشود)

حتی بنده در رویداد Service_Destroy سرویس کد زیر رو هم مینویسم باز سرویس بسته میشه :

StartServiceAt(Me, DateTime.Now + 1 * 1000, False)

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

پیشاپیش از راهنمایی شما سپساگزارم

لینک ارسال
به اشتراک گذاری در سایت های دیگر

الان که تست میکنم و در رویداد Service_Destroy سرویس رو مجددا اجرا می کنم ، وقتی سرویس رو بصورت دستی از برنامه های در حال اجرا میبندی ، سرویس بسته میشه...

یه راه حل اینه که در رویداد Activity_Pause همه اکتیویتی های برنامه کد زیر رو بنویسی که منطقی و حرفه ای نیست. چون ممکنه که روی یک دستگاه کند اجرا نشه... و ناچاریم زمان اجرای سرویس رو افزایش بدیم و ممکنه مشکل ساز بشه.

ولی به درد برنامه هایی (شبیه به خودم) که زمان زیاد براشون مهم نیست قابل اجرا است...

StartServiceAt(service_name,DateTime.Now+30*1000,False)

اما میگم کار جالبی نیست. اما راه دیگه ای نیافتم :(

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در در 1395/06/11, 10:45:41، nima_j گفته است :

الان که تست میکنم و در رویداد Service_Destroy سرویس رو مجددا اجرا می کنم ، وقتی سرویس رو بصورت دستی از برنامه های در حال اجرا میبندی ، سرویس بسته میشه...

یه راه حل اینه که در رویداد Activity_Pause همه اکتیویتی های برنامه کد زیر رو بنویسی که منطقی و حرفه ای نیست. چون ممکنه که روی یک دستگاه کند اجرا نشه... و ناچاریم زمان اجرای سرویس رو افزایش بدیم و ممکنه مشکل ساز بشه.

ولی به درد برنامه هایی (شبیه به خودم) که زمان زیاد براشون مهم نیست قابل اجرا است...


StartServiceAt(service_name,DateTime.Now+30*1000,False)

اما میگم کار جالبی نیست. اما راه دیگه ای نیافتم :(

 

در در 1395/06/10, 21:44:01، محمد فرجی گفته است :

اقا پژمان درصورت بسته شدن سرویس هم کار میکنه ؟ 

چون میخوام برای باز نگه داشتن سرویس ازش استفاده کنم :(

والا راه هایی که برای جلوگیری از بسته شدن سرویس به نظر من می رسید رو اینجا گفتم.

https://answercenter.ir/topic/8030-بسته-نشدن-سرویس/

 

حالا واقعا راهی بنظرم نمیرسه که بشه از بسته شدن سرویس در بعضی دستگاه ها جلوگیری کرد. بنظرم شاید اون دستگاه از برنامه هایی مثل خنک کننده و... استفاده میکنه.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در در 1395/06/14, 13:28:36، پژمان نیکروان گفته است :

والا راه هایی که برای جلوگیری از بسته شدن سرویس به نظر من می رسید رو اینجا گفتم.

https://answercenter.ir/topic/8030-بسته-نشدن-سرویس/

 

حالا واقعا راهی بنظرم نمیرسه که بشه از بسته شدن سرویس در بعضی دستگاه ها جلوگیری کرد. بنظرم شاید اون دستگاه از برنامه هایی مثل خنک کننده و... استفاده میکنه.

در اندروید های 5 به بالا برنامه ای بصورت پیشفرض وجود دارد به نام app optimizer که لیست برنامه ها رو نمایش میده... کابر میتونه یکی از 3 حالت موجود را برای بهینه سازی مصرف باتری به هر برنامه اختصاص دهد:

1. اصلا بهینه نشود.

2. همیشه بهینه شود.

3. اتوماتیک.

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

و این یعنی فاجعه ...

حالا سرویس هایی شبیه به اینستاگرام از این قاعده مستثنی هستند و همیشه فعال هستند.

حتی اگر زمان بستن سرویس اینستا بصورت دستی یک پیام سیستمی هم مشاهده می شود...!

پس فعلا راه حلی در B4A یافت نمی شود...

لینک ارسال
به اشتراک گذاری در سایت های دیگر

ولی بنده فکر میکنم اگه اکشن مورد نظر به صورت intent filter در منیفست تعریف بشه با بسته شدن سرویس هم به کار خودش ادامه میده...

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 18 ساعت قبل، porya گفته است :

ولی بنده فکر میکنم اگه اکشن مورد نظر به صورت intent filter در منیفست تعریف بشه با بسته شدن سرویس هم به کار خودش ادامه میده...

درسته. اما تنها یک سری از اکشن های خاص میتونن داخل منیفست ریجیستر بشن و بدون نیاز به سرویس کار کنن. مثل اتصال اینترنت.

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

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در در 1395/06/21, 18:53:44، porya گفته است :

ولی بنده فکر میکنم اگه اکشن مورد نظر به صورت intent filter در منیفست تعریف بشه با بسته شدن سرویس هم به کار خودش ادامه میده...

درست میفرمایید.

اما اینتنتی که نیاز دارم رو نتونستم برای نوشتن در منیفست پیدا کنم .

مثلا:

1) با کپی شدن متن یه سرویس اجرا بشه... (برای استفاده متن در برنامه)

2) هر دقیقه یک سرویس اجرا بشه... (برای هشدار زمان نوبت و یا آلارم)

اما از وضعیت اتصال که استفاده میکنم سرویس بسته هم که باشه اجرا میشه که برای الان بنده کاربردی نیست.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 2 هفته بعد...
در در 1395/01/08, 23:25:32، پژمان نیکروان گفته است :

بسم الله الرحمن الرحیم

سلام

 

BroadcastReceiver اصلا چیه؟

 

چرا به جای BroadcastReceiver خود بیسیک از PNBroadcastReceiver استفاده کنیم؟

 

با برادکست رسیور چه کارایی میشه انجام داد؟

 

آیا فقط میشه به رویدادهای مختلف موبایل گوش داد یا میشه اطلاعاتی هم ازشون گرفت؟

 

چه رویداد هایی داریم تو اندروید؟ از کجا پیداشون کنیم؟

 

همه ی اینها و آموزش استفاده از PNBroadcastReceiver در فیلم آموزشی 5دقیقه ای با حجم 9مگ توضیح داده شده.

 

کنار این فیلم دو سورس قرار گرفته که با استفاده از یکیش میتونیم به روشن یا خاموش شدن صفحه نمایش گوش بدیم ، وقتی صفحه روشن شد در لاگ چاپ میشه صفحه روشن شد و وقتی خاموش شد هم بالعکس...

و در سورس دوم اطلاعات باتری گرفته شده ، مثلا زمانی که به شارژر متصل یا قطع شد Toast داده میشه و یا میشه فهمید که شارژر USB هست یا با پریز برق. و همچنین درصد شارژ گوشی بعد از کم شدن شارژ نمایش داده میشه با Toast...

*برادکست رسیور تنها برای اینکار نیست بلکه میتونید به رویدادهای دیگه مثل وصل یا قطع شدن هدست ، زنگ خوردن گوشی و....... گوش بدید و کاری رو انجام بدید*

 

نمونه سورس ها به این دلیل کنار فیلم قرار داده شدن که فیلم رو حتما دانلود کنید چون احتمالا چیزای خوبی یاد میگیرید و مطمئنا ازدیدن فیلم خسته نمیشید.

دانلود کتابخانه PNBroadcastReceiver

 

دانلود فیلم آموزشی و دو سورس

 

امیدوارم خوشتون بیاد و راضی باشید ، اگه سوالی پیش اومد بپرسید. :53:

سلام

اگه میشه اکشن مربوط به قفل و باز شدن قفل صفحه رو هم بفرمایید چه کدیه

ممنون

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱ ساعت قبل، amardia گفته است :

اگه میشه اکشن مربوط به قفل و باز شدن قفل صفحه رو هم بفرمایید چه کدیه

سلام. این دوتا هستن اولی باز شدن و دومی فکر کنم قفل شدن:

android.intent.action.USER_PRESENT
android.intent.action.ACTION_SHUTDOWN

نمیدونم چقدری اطلاعات دارید از برادکست رسیور اما این اکشن ها استاتیک هستن و میتونید توی منیفست هم رجیسترشون کنید و نیازی به سرویس ماندگار ندارید. فقط یه سرویس باشه که استارت بشه موقع اتفاق افتاد این رویدادها.(یعنی سرویس بسته میشه هم کار میکنه)

فعلاً از همون کتابخانه PN هم میتونید استفاده کنید.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 1 ماه بعد...
در در 1395/01/08, 20:55:32، پژمان نیکروان گفته است :

بسم الله الرحمن الرحیم

سلام

 

BroadcastReceiver اصلا چیه؟

 

چرا به جای BroadcastReceiver خود بیسیک از PNBroadcastReceiver استفاده کنیم؟

 

با برادکست رسیور چه کارایی میشه انجام داد؟

 

آیا فقط میشه به رویدادهای مختلف موبایل گوش داد یا میشه اطلاعاتی هم ازشون گرفت؟:53:

ابتدا تشکر میکنم از پژمان عزیز بعد از مدتها یه آموزش استاندارد با صدای خوب  واضح و ... دیدیم ( دم شما گرم )
البته هستند آموزش های خوب اساتید ولی به اینصورت کار شده خیلی کم هست

در ادامه خاهش میکنم اگر ممکنه یه مثال ساده قرار بدید برای اینکه 

برنامه هر 6ساعت یک بار بره به سایت و یه مقداری رو بگیره 
و وقتی هم به اینترنت وصل شد هم به همین صورت

مثلا داده ای رو بگیره یه عدد که تو php گفتیم برگردونه 

در واقع 2 تا اینتنت لازم داریم اگر درست متوجه شده باشم 
یکی برای فهمیدن اتصال به اینترنت 
یکی برای 6 ساعت یک بار 

ممنون میشم راهنمایی بفرمایید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 46 دقیقه قبل، arastooms گفته است :

ممنون میشم راهنمایی بفرمایید

سلام عزیز دل.

خواهش میکنم ممنون.

اجازه بدید کتابخانه AlarmManager منتشر بشه. حتما با استفاده از اون که قبلا هم گفتم خیلی استاندارد تر هست اینکارو براحتی انجام میدیم.

یه چند روز دیگه با همین نمونه سورسی که میخواین قرار داده میشه.

اون دیگه یک هشدار ساز کامل و استاندارد هست.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 2 دقیقه قبل، پژمان نیکروان گفته است :

سلام عزیز دل.

خواهش میکنم ممنون.

اجازه بدید کتابخانه AlarmManager منتشر بشه. حتما با استفاده از اون که قبلا هم گفتم خیلی استاندارد تر هست اینکارو براحتی انجام میدیم.

یه چند روز دیگه با همین نمونه سورسی که میخواین قرار داده میشه.

اون دیگه یک هشدار ساز کامل و استاندارد هست.

سپاس سپاس پژمان جان 
من در واقع قصدم اینه که نوتیفیکیشن های کاربر رو تو هاست بهش برگردونم 
منتها هر 6 ساعت باید کنترل کنه برنامه ببینه کاربر رکورد جدید داره 
یا درواقه ببینه به دیتابیس رکورد جدید اضافه شده 
تا بصورت نوتیفیکیشن نشون بدم 

پس منتظر می مونم 
مرسی از زحماتت 
 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.

×
×
  • اضافه کردن...