رفتن به مطلب
بخش Unity به انجمن اضافه شد
  • 0

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


phd.khosravi

سوال

سلام به همه دوستان

 

یه دکمه تو برنامه گذاشتم که میخوام اگه کسی روش کلیک کرد اون لحظه ویبره بزنه همین که دستشو برداشت ویبره قطع بشه کسی میدونه کمک کنه ؟

 

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

 

ممنون از دوستان

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

14 پاسخ به این سوال تاکنون داده شده است

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

توی رویداد Down  دکمه کد مربوط به ویبره رو بنویسید

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

دوست عزیز من از دستور select case استفاده کردن و گفتم اگه action down shod ویبره بزنه ولی نمیدونم چیکار کنم وقتی که طرف دستشو برداشت ویبره قطع بشه یعنی موقع action up اخه کتابخونه phone برا ویبره فقط اجرای ویبره برا یه زمان خاصی داره

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

شما دوست عزیز خب اگه از دکمه استفاده میکنید که واسه روشن شدن از رویداد Down  مربوط به دکمه و در صورت قطع شدن از رویداد Up دکمه استفاده کنید.

و در ضمن شما مگه از چه ویویی استفاده کردید که اومدید از دستور Select Case  برای یک روشن خاموش شدن استفاده کردید ؟

میشه یکم بیشتر توضیح بدید ؟

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

Sub plasar1_Touch (Action As Int, X As Float, Y As Float)

	Select Action
		Case Activity.ACTION_DOWN
			
			vib.Vibrate(1000)
				
				
				
		Case Activity.ACTION_UP	
	End Select
End Sub
Dim vib As PhoneVibrate

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

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

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

Sub plasar1_Touch (Action As Int, X As Float, Y As Float)
	Select Action
	 Case plasar1.ACTION_DOWN
	 	'Vibrate On
	 Case plasar1.ACTION_UP
	 	'Vibrate Off
	 End Select
End Sub
لینک ارسال
به اشتراک گذاری در سایت های دیگر

شرمنده ولی این vibrate on و vibrate off از چه نوع تابعین چون وقتی مینویسم قرمز میشه یعنی وجود نداره

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

این کد رو امتحان کنید :

Sub Vibrate(On As Long, Off As Long)
    Dim r As Reflector
    r.Target = r.GetContext
    r.Target = r.RunMethod2("getSystemService", "vibrator", "java.lang.String")
    Dim pattern(2) As Long
    pattern(0) = On
    pattern(1) = Off
    r.RunMethod4("vibrate", Array As Object(pattern, 0), Array As String("[J", "java.lang.int"))
End Sub

Sub CancelVibrate
    Dim r As Reflector
    r.Target = r.GetContext
    r.Target = r.RunMethod2("getSystemService", "vibrator", "java.lang.String")
    r.RunMethod("cancel")
End Sub


Sub plasar1_Touch (Action As Int, X As Float, Y As Float)
	Select Action
	 Case plasar1.ACTION_DOWN
	 	Vibrate(500,300)
	 Case plasar1.ACTION_UP
	 	CancelVibrate
	 End Select
End Sub
لینک ارسال
به اشتراک گذاری در سایت های دیگر

عزیزان اصلا دستوری برای استوپ کردن ویبره وجود نداره.


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



AddPermission(android.permission.VIBRATE)

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

دستت درد نکنه آقا امین فقط یه خواهشی که دارم اینکه میشه یه توضیح کامل در مورد این کدهاتون بدید اخه من خیلی حرفه یی نیستم .. ممنون میشم

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

دستت درد نکنه آقا امین فقط یه خواهشی که دارم اینکه میشه یه توضیح کامل در مورد این کدهاتون بدید اخه من خیلی حرفه یی نیستم .. ممنون میشم

 

دوتا Sub داریم که از طریقکدهای جاوا وابراتور گوشی رو فعال یا غیر فعال میکنه 


Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
long[] pattern = {0, 100, 1000};
v.vibrate(pattern, 0);

یه همچین کد جاوایی  رو از طریق Reflector  رو بیسیک اجرا کردیم .

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

دستت درد نکنه آقا امین فقط یه خواهشی که دارم اینکه میشه یه توضیح کامل در مورد این کدهاتون بدید اخه من خیلی حرفه یی نیستم .. ممنون میشم

کد آقا امین میاد با با Reflection ویبره رو انجام میده ، با تایمی که بهش میدیم میتونیم تایین کنیم که چجوری ویبره بزنه و به محض اجرا شدن رویداد CancelVibre ویبره قطع میشه.

که البته همونطور که گفتم باید اون کد به مانیفست اضافه بشه و برای اینکه بخواین یکسره ویبره بزنه تا زمانی که دستتون رو وردارید ، باید اون عدد 500و300 رو به 1.2 تغییر بدید تا فاصله ویبره کم بشه و یکسره بشه.

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

دانلود

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

ممنون اگه میشه در مورد این چند قسمت بیشتر توضیح بدین که عملکرد رو درک کنم

r.Target = r.GetContext  دقیقا عملکرد Target و GetContext چیه ؟

RunMethod2("getSystemService", "vibrator", "java.lang.String")

این getSystemService و java.lang.String دستورات ثابتی هستن یا نه ؟ توضیح کلی درباره این دو کد بدین ممنون میشم.

 

وظیفه pattern اینجا چیه ؟

و در آخر

RunMethod4("vibrate", Array As Object(pattern, 0), Array As String("[J", "java.lang.int"))

Array As Object(pattern, 0) و Array As String("[J", "java.lang.int رو توضیح بدین که چرا 0 گذاشتین برا pattern و این J چیه ؟

 

بازم شرمنده ولی خب واقعا میخوام یادبگیرم

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

اینها همه کدهای جاوا هستن که با کتابخونه Reflection اون هارو اجرا میکنیم.  یاد گرفتنش هم با 2خط توضیح نمیشه(چه کد ها وچه طریقه اجرای اون ها با reflect کردن) ... شما برو جستجو و مطالعه کن کم کم میفهمی چیه

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

بایگانی شده

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

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

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