رفتن به مطلب

ضبط ، توقف ، پخش و حذف صدا از داخل برنامه با کتابخانه AudioRecorder


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

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

بنام خدا.

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

اول یه توضیح در مورد این ضبط صدا بدم.

اولا اینکه اینکار با استفاده از کتابخانه AudioRecorder صورت میگیره.

دوم: همونطور که میدونید برنامه ضبط صدای خود گوشی بعد ازاین که صدا ضبط شد بعد از توقف خودش خودکار داخل یه پوشه ذخیرش میکنه،یعنی ما نمیایم دکمه ذخیره رو بزنیم برای اینکار.

اما یه دکمه حذف گذاشتن که اگه دوست داشتیم صدایی که ضبط شده رو از همونجا حذف کنیم و دوباره صدای جدید ضبط کنیم.

پس اینی من آماده کردم هم اینجوریه و صدایی که ضبط میشه رو داخل حافظه رم ذخیره میکنه و در صورت نیاز همونجا دکمه حذف رو میزنید و حذف میشه.

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

خب اول که کتابخانه audioRecorder باید تیک بخوره.

یه متغیر تعریف کردم:

Dim rec As AudioRecorder

برای شروع ضبط یک صدا ازاین کد استفاده میکنیم:

Dim m As Int
rec.startRecording(m,".mp3","RecordeMan")

ببینید اول یه متغیر از نوع int تعریف کردم به نام m که باید اولش قرار بگیره(نمیدونم چرا چون خودش اینطور مثال زده بود)

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

و قسمت سوم هم یه اسم واسه فایلم نوشتم.

توجه: برای مثال اگه ما اسم: recordeJadid رو روی فایلمون بذاریم ، وقتی داخل رم داره ذخیره میشه خودش بهش عدد رندم اضاقه میکنه که تکراری نشه و یا جایگزین قبلیه نشه مثل:

recordeJadid214656.mp3

recordeJadid8880023.mp3

خب.

با این دستور ضبط رو متوقف میکنیم:

    rec.stopRecording

پس وقتی متوقف شد یعنی ذخیره شد و آماده پخش هست. با این دستور به راحتی آخرین رکورد قابل پخش هست:

    rec.startPlayback

به همین راحتی ، صدایی که ضبط شده رو پخش میکنه.

و اما گفتم یه دکمه حذف هم گذاشتم که مثل ضبط صدای خوده گوشی بشه و اگه اینی که ضبط شده رو نیخواستیم حدفش کنیم. که کدش این میشه:

    rec.delete

تموم شد،به همین راحتی ، اما توی سورس من این کد رو برای دکمه حذف گذاشتم که از کاربر سوال کنه:

Dim p As Int
   p=Msgbox2("آیا حدف شود؟","حدف این صدا","بله","خیر","",Null)
   If p=DialogResponse.POSITIVE Then
   rec.delete
   ToastMessageShow("آخرین صدا حذف شد!",True)
   End If

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

و این سلیقه شماست که خووووب درستش کنید که زمان داشته باشه و... یا وقتی داره صدا ضبط میشه یه چراغ خاموش و روشن بشه که کاربر بفهمه.

توجه: این آموزش فقط مختص این کتابخانه ای هست که همراه سورس وجود داره و شاید کتابخانه هایی با مشابه این اسم پیدا بشه که اینکارو انجام نده.

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

پسورد: basic4android.org

دانلـــــــــــــــــود سورس و کتابخانه

سورس پیوست هم شد!!!!

اگه مشکلی وجود داشت از لینک پیوست شده دانلود کنید!

ضبط صدا از برنامه.zip

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

درود و تشکر فراوان از آقای پژمان نیکروان که واقعا خیلی زحمت میکشه در انجمن و اطلاعاتش رو در اختیار دیگران قرار میده *give_rose*

با اجازه بنده پیوست رو انجام دادم

RecordSound.zip

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

کیفیت ضبط با هنذفری خیلی پایین و با خود گوشی هم که خش داره و نویز داره

شبیه آهنگ پیشواز ایرانسله

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

دیگه من به این توجه نکردم اما به نظرم خوبه.

و شاید بشه کیفیت رو درست کرد.

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

پژمان جان بیزحمتا نحوه بالا بردن کیفیت رو بزار یا همین سورس رو لطف کن آمادش کن*تک قلب*

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

راستش من رو این کار نکردم که چطور هست.

شاید بشه اینکارو کرد.... باید امتحان کنم اگه شد حتما میگم.

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

  • 1 ماه بعد...

سلام من می خوام مسیر ذخیره فایل را مثلا اینجا باشه

File.DirInternal,"Andraid

اما نمیشه آدرس داد ایا راهی وجود داره یا نمیشه

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

سلام عزیز.

ببینید نمیدونم میدونید یانه ، هر صدایی که ضبط میشه به طور پیش فرض داخل رم گوشی ذخیره میشه که و با یه اسم خاصی.

بازهم با همون آموزش بالا پیش میریم.

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

Dim m As Int
rec.startRecording(m,".mp3","RecordeMan")  

یعنی فایل صوتی ما میره داخل رم و با اسم RecordeMan ذخیره میشه و همونطور که بالا گفتم یه عدد به صورت تصادفی هم کنارش قرار میده و ما نمیدونم این عدد چی هست و اسم فایلمون چی هست؟

RecordeMan6584020.mp3

خب حالا فرض میکنیم فایل صوتی داخل رم ذخیره شد.

حالا کافیه اون رو با دستور کپی ، کپی کنیم داخل اون مسیر dirInternal که شما میخواین. اما اسمشو نداریم ؟

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

Dim name As String
name=rec.sampleFile

تموم شد. من اومدم یه متغیر به نام name تعریف کردم و با دستور sampleFile اسم فایلی که سیو شد رو گرفتم.

کافیه که با دستور کپی اونو تو مسیر خاص خودمون کپیش کنم و اونی که تو رم بود رو پاک کنم ، یعنی درکل میشه این:

Dim name As String
name=rec.sampleFile
File.Copy(File.DirRootExternal,name,File.DirInternal,name)
File.Delete(File.DirRootExternal,name)

اول: تعریف کردن متغیر

ریختن اسم فایل داخل متغیر

کپی کردن از رم به مسیر dirInternal

و حذف اون قبلیه از داخل رم.

دیگه ازاین واضح تر نتونستم بگم.*laugh2*

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

موفق باشی.

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

کیفیت چطوره pejiiiii

یاد نیمباز افتادم یادش بخیر

کیفیت واسم مهمه

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

آره یادش بخیر *hendoone*

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

راستی دوستان سورس پیوست هم شد!!!!!!!!

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

سلام استاد

قسمت کپی کردن خطا می گیره

File.Copy(File.DirRootExternal,name,File.DirInternal,name)

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

سلام استاد

قسمت کپی کردن خطا می گیره

File.Copy(File.DirRootExternal,name,File.DirInternal,name)

واقعا معذرت میخوام ممنونم که خبر دادید.

یه جا رو اشتباه گفته بودم... قسمت توضیحات دوممم راجع به ذخیره ، جایی که اسم فایل رو به داخل متغیر name میریزیم ، یه سری ادرس اضافه هم میده که باید رپلیس بشه و اون ورداشته بشه.

یعنی درکل اینوری:

name=rec.sampleFile
name=name.Replace("/mnt/sdcard/","")

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

ضبط و کپی به حافظه کش.zip

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

  • 4 هفته بعد...
موقع توقف خطا داد

داخل گوشیت رم هست؟

یه سورس ضبط صدای دیگه هم بچه ها گذاشتن اونم خوبه .

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

یک سوال دیگه

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

به نظر شما ایراد از چی هست

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

اینو یه نگاه بنداز خیلی خوبه.

http://answercenter.ir/thread3054.html

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

  • 2 ماه بعد...

سلام پژمان جان ببخشید یه مشکل پیش اومد برام

همه ی کد ها درسته اما روی کد زیر :

rec.StartRecording(m,".mp3","flute_strec")

ارور :

object reference not set to an instance of an object

رو میده .

مشکلش چیه؟

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

  • 4 هفته بعد...
rec.startRecording(m,".mp3","RecordeMan")

 

سلام آقای نیکروان .

چرا بعد از جواب دادن تلفن ضبط قطع میشه ؟!! :fekr:

 

آیا راهی هست ؟! لطفا راهنمایی کنین

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

سلام آقای نیکروان .

چرا بعد از جواب دادن تلفن ضبط قطع میشه ؟!! :fekr:

 

آیا راهی هست ؟! لطفا راهنمایی کنین

اگه میخواین موقع ج دادن به تلفن هم صدا رو ضبط کنه ، فکر کنم باید توی سرویس ، ضبط صدا رو انجام بدید.

البته تست نکردم که میتونه ضبط کنه یانه.

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

بایگانی شده

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

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

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