راهنمایی برای کتاب صوتی آنلاین

سوال

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

در حال بررسی 0
, 2020-02-07T02:19:34+03:30 3 پاسخ کاربر تازه 0

پاسخ ها ( 3 )

    2
    2020-02-09T22:38:58+03:30

    سلام عزیزم

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

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

    که البته این برای فایل های ویدئویی هست، شما پسوند mp4 رو به mp3 تغییر بده.

    این برای دانلود فایلت.

      0
      2020-02-11T16:28:48+03:30
      این پاسخ ویرایش شد.

      سلام” خیلی ممنون از پاسخ شما. 60 نفر دیدند ولی فقط شما دوست عزیزم جواب دادید.

      یادم رفت بگم: این برنامه قبلا آفلاین بوده واسه خودم ، حالا دارم به آنلاین تبدیل می کنم. برنامه مذهبیه . من داخل لیست ویو بجای تعریف 100 تا دکمه از دیتابیس استفاده کردم. چون عناوینم فرق می کنند.

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

      Sub ListView1_ItemClick (Position As Int, value As Object)
      	Log("position: " & Position & " -value: " & value)
      	ListView1.SingleLineLayout.Label.Typeface = Typeface.LoadFromAssets("samim.ttf")
      	rtp.CheckAndRequest(rtp.PERMISSION_WRITE_EXTERNAL_STORAGE)'مجوز دسترسی به کارت حافظه برای نوشتن روی آن'
      	rtp.CheckAndRequest(rtp.PERMISSION_READ_EXTERNAL_STORAGE)'مجوز دسترسی به کارت حافظه برای خواندن از روی آن'
      	If File.Exists(File.DirAssets,"1.mp3")=False Then 'برای بروز رسانی تغییرات دیتابیس باید این خط و خط58 را غیر فعال کنیم'
      '		Msgbox("این برنامه برای بار اول بین 5 تا 10 دقیقه زمان نیاز دارد تا کاملا راه اندازی گردد","لطفا شکیبا باشید")
      	ht.Initialize("ht",Me)'برای دانلود فایل صوتی از سرور مشخص شده بعد از انتخاب سوره مورد نظر'
      	ProgressDialogShow2("...در حال دریافت",True)
      	ht.Download("http://bayanbox.ir/download/2351446064684794018/1.mp3")
      	End If
      			Dim Seda_1 As String
      
      	If (EditText1.Text == "") Then
      		Main.cursor=Main.sql.ExecQuery("SELECT*FROM Fehrest")
      		Main.cursor.Position=Position
      	Else
      		Main.cursor=Main.SQL.ExecQuery("SELECT*FROM Fehrest WHERE Soorehha_1 LIKE '%" & EditText1.Text.Trim() & "%'")
      		Main.cursor.Position=Position
      	End If
      	
      	Seda_1 = Main.cursor.GetString("Seda_1")
      	'Log(Seda_1)
      	MediaPlayer.Load(File.DirAssets,Seda_1)
      	MediaPlayer.Play
      End Sub
      	
      Sub Activity_PermissionResult (Permission As String, Result As Boolean)
      	If Permission = rtp.PERMISSION_WRITE_EXTERNAL_STORAGE And Permission=rtp.PERMISSION_READ_EXTERNAL_STORAGE  And Result = False Then
      		Msgbox("شما اجازه دسترسی به کارت را به این برنامه نداده اید و در اینصورت ممکن است برخی از بخش های برنامه به درستی کار نکنند","")
      	End If
      End Sub
      
      	
       public Sub jobDone (job As HttpJob)'ادامه کد برای دانلود فایل صوتی و... از سرور مشخص شده'
      	ProgressDialogHide
      	If job.Success =True Then
      		Dim i1 As InputStream=job.GetInputStream
      		Dim o1 As OutputStream=File.OpenOutput(File.DirAssets,"1.mp3",True)
      		File.Copy2(i1,o1)
      		i1.Close
      		o1.Close
      		ToastMessageShow("دریافت فایل با موفقیت انجام شد",False)
      		Else
      		ToastMessageShow("خطا در برقراری ارتباط با سرور",False)
      			
      	End If
      End Sub

       

        1
        2020-02-11T22:49:55+03:30

        خواهش میکنم

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

        شما یک ساب تعریف کن و همه دستورات مربوط به دانلود رو داخلش بنویس، و یک ورودی بهش بده که همون آدرس آیتم های صوتی هست، که هردفعه تغییر میکنه

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

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

        مثلا یک دکمه اینطوری تعریف کنید

        Sub btn_play_Click
        	Activity.AddView(vid,0,0,100%x,100%y)	
        	vid.LoadVideo(File.DirRootExternal,"clip.mp3")
        	vid.MediaControllerEnabled = True
        	vid.Play
        End Sub

         

    0
    2020-02-11T23:56:03+03:30

    ممنونم.به سرور وصل میشه. دان میکنه اما الان روی خط۲۴ خطای عدم پیدا شدن اون فایل صوتی دانلود شده رو میده. تو هر جا بهش میدم بازم پیداش نمیکنه. بعدش اینقد سوال دااااارمممم. مثلا چطوری در کنار پخش صدا، متن هم بیاد. آیا برای هر عنوان صوتی اکتیویتی جداگانه برای متن میخواد یا نه.؟ 😁 منا صفر صفرم

      0
      2020-02-12T23:44:07+03:30

      خب عزیزم، مگه فایل شما با نام Seda_1 ذخیره شده که بتونه پیداش کنه؟!

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

       

        0
        2020-02-13T00:02:14+03:30
        این پاسخ ویرایش شد.

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

        Sub ListView1_ItemClick (Position As Int, value As Object)
        	Log("position: " & Position & " -value: " & value)
        	ListView1.SingleLineLayout.Label.Typeface = Typeface.LoadFromAssets("samim.ttf")
        	rtp.CheckAndRequest(rtp.PERMISSION_WRITE_EXTERNAL_STORAGE)'مجوز دسترسی به کارت حافظه برای نوشتن روی آن'
        	rtp.CheckAndRequest(rtp.PERMISSION_READ_EXTERNAL_STORAGE)'مجوز دسترسی به کارت حافظه برای خواندن از روی آن'
        	If File.Exists(File.DirDefaultExternal,"1.mp3")=False Then 'برای بروز رسانی تغییرات دیتابیس باید این خط و خط58 را غیر فعال کنیم'
        '		Msgbox("این برنامه برای بار اول بین 5 تا 10 دقیقه زمان نیاز دارد تا کاملا راه اندازی گردد","لطفا شکیبا باشید")
        	ht.Initialize("ht",Me)'برای دانلود فایل صوتی از سرور مشخص شده بعد از انتخاب سوره مورد نظر'
        	ProgressDialogShow2("در حال دریافت...",True)
        	ht.Download("http://bayanbox.ir/download/2351446064684794018/1.mp3")
        	End If
        '	Dim Seda_1 As String
        
        	If (EditText1.Text == "") Then
        		Main.cursor=Main.sql.ExecQuery("SELECT*FROM Fehrest")
        		Main.cursor.Position=Position
        	Else
        		Main.cursor=Main.SQL.ExecQuery("SELECT*FROM Fehrest WHERE Soorehha_1 LIKE '%" & EditText1.Text.Trim() & "%'")
        		Main.cursor.Position=Position
        	End If
        	
        '	Seda_1 = Main.cursor.GetString("Seda_1")
        	'Log(Seda_1)
        
        End Sub
        	
        Sub Activity_PermissionResult (Permission As String, Result As Boolean)
        	If Permission = rtp.PERMISSION_WRITE_EXTERNAL_STORAGE And Permission=rtp.PERMISSION_READ_EXTERNAL_STORAGE  And Result = False Then
        		Msgbox("شما اجازه دسترسی به کارت را به این برنامه نداده اید و در اینصورت ممکن است برخی از بخش های برنامه به درستی کار نکنند","")
        	End If
        End Sub
        
        	
         public Sub jobDone (job As HttpJob)'ادامه کد برای دانلود فایل صوتی و... از سرور مشخص شده'
        	ProgressDialogHide
        	
        	If job.Success =True Then
        		Dim i1 As InputStream=job.GetInputStream
        		Dim o1 As OutputStream=File.OpenOutput(File.DirDefaultExternal,"1.mp3",True)
        		File.Copy2(i1,o1)
        		i1.Close
        		o1.Close
        		ToastMessageShow("دریافت فایل با موفقیت انجام شد",False)
        		Else
        		ToastMessageShow("خطا در برقراری ارتباط با سرور",False)
        	End If
        	
        	MediaPlayer.Load(File.DirDefaultExternal,"1.mp3")
        	MediaPlayer.Play	
        	End Sub

         

          0
          2020-02-14T00:11:33+03:30

          منظورت از پخش مجدد اینه خود برنامه مجدد پخشش کنه یا خود کاربر؟

            0
            2020-02-15T23:22:56+03:30

            نع. خود کاربر. این کلا یه بار بعد از دانلود پخش میکنه. حالا نمیدونم آدرس دهی من اشتباهه یا باید شرطی بشه یا کار دیگه ای. خداااا کاشکی یه نفر کنار دستم بود قشنگ یادم میداد. 🙁

    0
    2020-02-16T00:43:57+03:30

    خب اینکه کاری نداره

    میتونی یه دکمه بذاری، برای این که کاربر فایل مربوطه رو پخش کنه
    یا مثلا از طریق کتابخونه BSFileChooser یه پنجره اکسپلورر نشون کاربر بدی که بتونه از اونجا صدای مورد نظرشو انتخاب کنه و پخش کنه

     

ارسال یک پاسخ