رفتن به مطلب
  • 0

porya

سوال

سلام از کتابخونه http job برای دانلود استفاده میکنم حالا چطور میشه درصد دانلود رو نمایش داد

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

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

سلام شهاب جان

فک کنم باید تو اکتیویتی main جایی که کدای دانلود رو نوشتی، یه شرط بذاری که اگه فایله موجود بود، دیگه دانلودش نکنه

فکر کنم اینطوری جواب بده

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

شهاب 1392 ،

شما باید چک کنید که اگر فایل وجود داشت مثلا فایل رو اجرا کنه و اگر وجود نداشت دانلود کنه.

به همین سادگی ( خیلی از کار ها هست که بنظر سخت می آد اما با یکم تفکر حله *فقط فکر*)

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

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

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

سلام

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

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

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

 

طبق کدهای امین پیش میریم

خب این کد رو ببین :

Sub btnDownload_Click
	Dim dd As DownloadData
	dd.url = link1
	dd.EventName = "dd"
	dd.Target = Me
	CallSubDelayed2(DownloadService, "StartDownload", dd)
End Su

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

 

و در اخر این دوتا رویداد رو هم واسه همه اکتویتی ها قرار بده:

Sub dd_Progress(Progress As Long, Total As Long)
	ProgressBar1.Progress = Progress / Total * 100
	Label1.Text = NumberFormat(Progress / 1024, 0, 0) & "KB / " & _
		NumberFormat(Total / 1024, 0, 0) & "KB"
End Sub

Sub dd_Complete(Job As HttpJob)
	Log("Job completed: " & Job.Success)
	Job.Release
End Sub

کل کار همینه.

 

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

 

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

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

سلام

میشه دوست عزیز.

این بستگی به خودتون داره

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

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

خب ما بر فرض توی دیتابیس 3تا فیلد داریم :

ID

Title

Link

خب من میام Title  رو میدم به لیست ویو که مثلا همون موضوع بندس یا اسم فایلی که میخوام دانلود کنم.

Sub Process_Globals
 
 Dim GetLink As Object
End Sub

Dim Cr As Cursor 
Cr = SQL.ExecQuery("SELECT * FROM Tbl")
For i = 0 To Cr.RowCount - 1
 Cr.Posoition = i
  Lv.AddSingleLine2(Cr.GetString("Title"),Cr.Get("Link"))
 Next
 
 
Sub Lv_ItemClick (Position As Int, Value As Object)
	GetLink = Value
	StartActivity(AcName)
End Sub

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

 

حالا برای دانلود و بقیه کار ها توی اکتویتی بعدی اینطور عمل می کنیم:

ub Activity_Create(FirstTime As Boolean)
  	Dim dd As DownloadData
	dd.url = Main.GetLink
	dd.EventName = "dd"
	dd.Target = Me
	CallSubDelayed2(DownloadService, "StartDownload", dd)
End Sub

یک همچین کدی میشه نوشت.

موفق باشید

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

سورس دانلود و نمایش مقدار دانلود رو آقای ایزدی زحمت کشیدن و قرار دادن : http://answercenter.ir/topic/387-آموزش-دانلود-کردن-عکس-و-فایل-و-ذخیره-آن/?p=1923

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

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

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

سلام

میشه دوست عزیز.

این بستگی به خودتون داره

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

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

خب ما بر فرض توی دیتابیس 3تا فیلد داریم :

ID

Title

Link

خب من میام Title  رو میدم به لیست ویو که مثلا همون موضوع بندس یا اسم فایلی که میخوام دانلود کنم.

Sub Process_Globals
 
 Dim GetLink As Object
End Sub

Dim Cr As Cursor 
Cr = SQL.ExecQuery("SELECT * FROM Tbl")
For i = 0 To Cr.RowCount - 1
 Cr.Posoition = i
  Lv.AddSingleLine2(Cr.GetString("Title"),Cr.Get("Link"))
 Next
 
 
Sub Lv_ItemClick (Position As Int, Value As Object)
	GetLink = Value
	StartActivity(AcName)
End Sub

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

 

حالا برای دانلود و بقیه کار ها توی اکتویتی بعدی اینطور عمل می کنیم:

ub Activity_Create(FirstTime As Boolean)
  	Dim dd As DownloadData
	dd.url = Main.GetLink
	dd.EventName = "dd"
	dd.Target = Me
	CallSubDelayed2(DownloadService, "StartDownload", dd)
End Sub

یک همچین کدی میشه نوشت.

موفق باشید

 

 

 

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

Sub ListView1_ItemClick (Position As Int, Value As Object)
	
	If Position = 0 Then
	ht1.Initialize("ht",Me)
	ht1.Download("http://*****")
	Else If Position = 1 Then 
	ht1.Initialize("htt",Me)
	ht1.Download("http://*****")
	End If
	
End Sub
لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

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

اگه لینکاتون رو توی برنامه میدید ( توی کدنویسی) که توصیه میکنم از دیتابیس استفاده کنید، و اما اگه لینک ها توی برنامه داده میشه مثلا توی یک ادیت تکست باز اون بحثش فرق میکنه.

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

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

خیلی ممنون از تمامی شما دوستان مخصوصا اقای ارتا

 

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

 

progress_bar_android_1_.gif

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

به ظاهر شاید بگید چ کار شاخیه :eynak:

نه عزیز این کلش یک پنله که یک Progress Bar  استفاده کرده و چنتا لیبل همین. :eynak:

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

به ظاهر شاید بگید چ کار شاخیه :eynak:

نه عزیز این کلش یک پنله که یک Progress Bar  استفاده کرده و چنتا لیبل همین. :eynak:

 

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

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

#Region  Activity Attributes 
	#FullScreen: False
	#IncludeTitle: True
#End Region

Sub Process_Globals
	'These global variables will be declared once when the application starts.
	'These variables can be accessed from all modules.

End Sub

Sub Globals
	Dim ht1 As HttpJob
	Private ListView1 As ListView
End Sub

Sub Activity_Create(FirstTime As Boolean)

	Activity.LoadLayout("111")
	ListView1.AddSingleLine2("w",0)
	ListView1.AddSingleLine2("q",1)


End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub


Sub ListView1_ItemClick (Position As Int, Value As Object)
	
	If Position = 0 Then
	ht1.Initialize("ht",Me)
	ht1.Download("http://*****")
	Else If Position = 1 Then 
	ht1.Initialize("htt",Me)
	ht1.Download("http://*****")
	End If
	
End Sub

Sub JobDone(Job As HttpJob)
	
	If File.IsDirectory(File.DirRootExternal,"m") = False Then
		File.MakeDir(File.DirRootExternal,"m")
	End If
	
	If Job.Success = True Then
		Select Case Job.JobName
			Case "ht"			
		Dim i1 As InputStream
		Dim o1 As OutputStream
		i1 = Job.GetInputStream
		o1 = File.OpenOutput(File.DirRootExternal & "/my","***.zip",False)
		File.Copy2(i1,o1)
		i1.Close
		o1.Close
		ToastMessageShow("با موفقیت ذخیره شد",False)
		End Select
		Select Case Job.JobName
			Case "htt"
		Dim i1 As InputStream
		Dim o1 As OutputStream
		i1 = Job.GetInputStream
		o1 = File.OpenOutput(File.DirRootExternal & "/my","***.zip",False)
		File.Copy2(i1,o1)
		i1.Close
		o1.Close
		ToastMessageShow("با موفقیت ذخیره شد",False)
	
		End Select
		End If
End Sub

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

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

سلام

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

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

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

 

طبق کدهای امین پیش میریم

خب این کد رو ببین :

Sub btnDownload_Click
	Dim dd As DownloadData
	dd.url = link1
	dd.EventName = "dd"
	dd.Target = Me
	CallSubDelayed2(DownloadService, "StartDownload", dd)
End Su

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

 

و در اخر این دوتا رویداد رو هم واسه همه اکتویتی ها قرار بده:

Sub dd_Progress(Progress As Long, Total As Long)
	ProgressBar1.Progress = Progress / Total * 100
	Label1.Text = NumberFormat(Progress / 1024, 0, 0) & "KB / " & _
		NumberFormat(Total / 1024, 0, 0) & "KB"
End Sub

Sub dd_Complete(Job As HttpJob)
	Log("Job completed: " & Job.Success)
	Job.Release
End Sub

کل کار همینه.

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

بله باید بشه.

شما استارتشو بزن یکم باهاش کار کن اگه دیدید واقعا دیگه نمیتونید کاری انجام بدید بگید تا راهنمایی کنیم. :ok:

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

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

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

بایگانی شده

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

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

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