owncloud / android

:phone: The ownCloud Android App
GNU General Public License v2.0
3.84k stars 3.05k forks source link

Pictures being viewed are automatically being downloaded #588

Closed enoch85 closed 9 years ago

enoch85 commented 10 years ago

As it is today, viewing pictures in the Android app also downloads them to the phone memory. It would be much better if the pictures wasn´t saved (would be better to have that as an option in the drop-down menu when long-pressing(?) on the filename) to the internal memory.

I don´t know why they are saved to the internal memory today, but my wild guess is that it has to be saved somewhere in order to be shown in the app. Why not just use a "direct connection" (WebDAV) or store them temporarily while shown, and then deleted when you slide to next picture? This would save both time (don´t have to delete the files that are stored like every week on a phone with lack of memory) and memory of course, as the pictures aren´t saved permanently.

What do you think @davivel ?

davivel commented 10 years ago

The reason to download them is that you don't have to download them again when you want to watch again later. That consumes both transfered data and time.

Finding the right balance between use of storage space, transfered data and time is the hard part of mobile apps. Specially because not all the users have the same requirements.

What exactly are you worried about? That the download target is the internal memory, and not other available storage in the device? This, indeed, is dependent of the device nowadays. And there are several issues requesting improvements and alternatives, that we should accept in this sense.

Is the problem the permanent storage itself? I would suggest in this case to use the web browser to access ownCloud. The key point of the ownCloud native app for Android should be providing permanent synchronization for smartly selected files, IMHO. We are on the way to that (really!). For just browsing, the web interface is a better tool, specially now that mobile theme is much better.

enoch85 commented 10 years ago

Ok, I get your point.

I just think it´s sad that the ownCloud app isn´t a whole solution. And by that I mean that you have to use other Android apps to complete the ownCloud app. Yes, that´s sad if you ask me.

If I wanted to save the pictures to my memory it would be better to have that as an option, instead of hardcoded. No, actually I rather not use the ownCloud app at all when browsing. For that purpose ES Filemanager is a much better option.

The ownCloud app is very good because it uploads pictures and movies, other than that - I don´t know. Sorry if I seem a bit harsh @davivel I know you put a lot of effort in this and you do a very good job, but this is just constructive criticism to make the app even better. One exampe is that screenshots are not saved. For that I use Foldersync and sync the folder where the screenshot is saved. I know for example also about #58 and I totally agree that the ownCloud app should take care about CalDAV and CardDAV as well, but that´s another issue. :) In other words, at least 4 different apps - not developed by ownCloud to fulfil my needs. That´s sad. :/

I don´t know how the development is in other countries but in Sweden we have very good data plans, so that´s not an issue. I have i.e. 51 GB free data + free calls and messages every month (~40€) so I don´t have to be worried.

Finding the right balance between use of storage space, transfered data and time is the hard part of mobile apps. Specially because not all the users have the same requirements.

**Please, could you guys make it an option instead to download the pictures?

  1. In the settings menu "Download the pictures when browsing them" YES/NO
  2. If "NO" then - make it possible to save each picture by tapping it.**

This would be the perfect balance for that as the user can choose by himself.

What exactly are you worried about?

Internal memory storage space, and having to use other apps to complete the ownCloud app. Would be much better if ownCloud could handle everything, /and be user friendly./

Is the problem the permanent storage itself?

Yes, 16GB internal memory(standard on phones today) isn´t enough and runs out of space quickly.

davivel commented 10 years ago

I see your points. Everybody here would like that the app makes a lot more. Indeed, that's our real target :) .

Let me update the title to make easier to browse this issue, and let's focus it in make optional the permanency of downloaded pictures.

But it cannot be put in high priority. Unless somebody wants to contribute implementing it, of course.

enoch85 commented 10 years ago

Thanks! :) Hope that this will be delt with soon anyway. At least before 1.6.

stefan-niedermann commented 10 years ago

i maybe have another solution: download and keep the files while browsing, so if you go back, you don't have to download it again (like it is now). But: If you press android back-button (leave the image viewer), delete the downloaded files.

this would be a compromiss between both solutions, maybe make it optional like @enoch85 suggested - you would still keep a good performance while watching the pictures.

davivel commented 10 years ago

That's a good point to take into account, @stefan-niedermann . I would say it's necessary, indeed, for the use case that @enoch85 describes. Deleting the local file just because the user went to the next one is simply too soon.

enoch85 commented 10 years ago

Something like this is what I mean: #597 & #592

"Stream" the pictures and videos instead of saving them at all. Idk how much bandwidth you guys have on your cellphones but my data plan (most in Sweden is like 10GB) is 51GB so I in my case there is no problem, and I think we should let the user deiced whether to stream or download as an permanent option in settings.

stefan-niedermann commented 10 years ago

haha, we in germany are happy if we get 500 MB from our providers... it's not this easy :-/...

jancborchardt commented 10 years ago

This is so it doesn’t take much bandwidth and you can also view pictures again after you viewed them before. Swiping through pictures would otherwise mean loading them again and again. Not a very performant experience and especially bad on mobile networks. This should stay like it is.

For pictures at least. For videos there’s #592

enoch85 commented 10 years ago

@jancborchardt I think you are missunderstnding the point.

I don't want the pictures to be downloaded. I have good bandwith.

Just because you in Germany have bad providers it doesen't mean that the whole world is such. ;)

At least make this option as a setting in advanced settings. Please reopen.

jancborchardt commented 10 years ago

There are (and will be) no advanced settings. This is simply a design decision we have to make.

Imagine: You’re looking through pictures, swiping right and right and it of course takes a bit every time a new picture is loaded. Then you want to go back a bit – it would need to load again with your solution. Even with great bandwidth this takes some time. And then later you’re on the train or whatever and want to view the pictures again – you can’t! Even though you viewed them before.

We need to have ownCloud designed properly for the offline case, and streaming files by default is not a good solution here. The current way of simply downloading them is much better. If you don’t want to have them, they are clearly marked and you can remove them again.

tobiasKaminsky commented 10 years ago

Maybe it is an idea to use bigger thumbnails? A regular image is ~4mb. In my opinion one never needs this big image. It would be sufficient to download a bigger thumbnail (~1024x768). This can be displayed full size on most devices without quality issues, but is very small (4mb --> 160kb). This one can be stored local on the device and be used if you want to share it via e.g. Whatsapp (as it will be resized anyway). And only if you long-press the image and download it you will get the full sized image.

I have read that iCloud is doing something like that to reduce the local storage size...

jancborchardt commented 10 years ago

Then I guess this can be solved as well with your (@tobiasKaminsky) solution as proposed in https://github.com/owncloud/android/issues/429#issuecomment-60251477 ?

tobiasKaminsky commented 10 years ago

Yes. I think both issues can be solved via the same mechanism. But I do not know if it is the best way...

enoch85 commented 10 years ago

@jancborchardt So you force me, and other users to use 3:d party apps like ES File Explorer to view the pictures as I want? Why not let us choose to have that option or not? It´s a simple checkbox in settings.

ES File Explorer uses WebDAV to view the pictures, and it´s not instant, but 0.5 seconds is OK for me on my 4G network, don´t you think? :) AND, you have your photos on your phone, already - it´s unnecessary to save them in two places on the cellphone - that´s why I think this is an issue. The pictures that you don´t have on your phone can easily be viewed and downloaded from the server Web UI, so what seems to be the problem here?

The ultimate solution would be if you could scroll through pictures in full size by swiping (not downloading), and the pictures you want to download can you just long-press and [save].

@tobiasKaminsky Thanks for making the Android app more usable. Unfortuanley Right now I´m only having it for instant upload. It would be nice if I could use it for browsing as well without having to clean my phone after every time.

LukeOwlclaw commented 10 years ago

As I understand right, the main issue here is: If you save photos in your owncloud the required memory fast exceeds the available memory on current smartphones. And that is true from today's view. Don't we all agree on this? So as I see it, the question is what to do about it.

So far we have two proposals:

1) @jancborchardt ignore it and let the user clean up the SD card (or internal storage) manually 2) @enoch85 do not save downloaded photos

I'd like to add another suggestion:

3) add a storage limit for owncloud offline files. owncloud will remove least recent used (or oldest) files which exceed limit (starred files will be exempted, of course).

Now, which way is the best, I do not know. Why not let users (of course only those who are willing and know what they are doing) try out in real life? They will then report back and then it can be decided which way to go.

And so we are back at needing https://github.com/owncloud/android/issues/655.

@jancborchardt Rigorously denying the need for experimental settings will make some people unhappy. And most probably exactly those who would be willing and are capable contributing to owncloud and making it better.

tobiasKaminsky commented 10 years ago

@LukasReschke Your 3rd suggestion is similar to mine (keep only n files on device), but (and that is a big point) you suggest to download the complete image, which is not necessary when you are only watching the images in the slide show.

LukasReschke commented 10 years ago

yeah, erm. I think you meant Luke and not me ;-)

tobiasKaminsky commented 10 years ago

yeah, erm. I think you meant Luke and not me ;-)

Yes. Sorry. In a different issue I had also the problem and the auto-completion showed you. But there I realized my fault, here not. Lukas <-> Luke it is too similar ;) ;)

LukeOwlclaw commented 10 years ago

@tobiasKaminsky I like your proposal. But I think it is another issue. Shrink images -> https://github.com/owncloud/android/issues/429. This issue is about how to avoid that storage fills up completely. Indeed, your proposal could be combined nicely with any of the three above (but with just your proposal storage will also fill up completely eventually).

jancborchardt commented 10 years ago

Folks, it’s not that easy:

It´s a simple checkbox in settings.

No, it’s 2 different approaches we have to maintain then. Lots of potential for bugs.

ES File Explorer uses WebDAV to view the pictures, and it´s not instant, but 0.5 seconds is OK for me on my 4G network, don´t you think? :)

… on your 4G network. ;) And no, I think half a second over 4G is really long.


In general, why the rush? In normal software projects there’s not just a setting added for everything, but you wait for a bit and think about how to solve it best.

I kinda trust @tobiasKaminsky's judgement here: Good middle-ground solutions, and he also knows what’s possible on Android. It’s just important to me that we don’t start littering up the app with edge-case settings before thinking about them more thoroughly than a few comments in an issue.

enoch85 commented 10 years ago

@jancborchardt #640 #601 #346 #156 #375 are just a few examples of requests of this matter. We demand it, you say no.

No, it’s 2 different approaches we have to maintain then. Lots of potential for bugs.

Ok, so if I understand you right you don´t want this feature because there is risk for potential bugs? There is a risk with bug in every change we do, but that doesn´t mean that we shouldn´t develop ownCloud and improve it, right? I think, and I really hope, that your aim is the same as mine, improving ownCloud. If it is, why deny us this?

Advanced settings is for advanced users, right? There is a user-case and a demand for both "regular" users, and for those who want to twist and tweak a little bit. I agree on a clean and simple design, and compared to others - ownClouds design is really nice if you ask me. But as I said, hide the advanced settings in [advanced settings] so the regular users don´t have to see them. Problem solved!

on your 4G network. ;) And no, I think half a second over 4G is really long.

0,5 sec isn´t precise. Just tested not and it´s more like 0.1, and on 3G 0,5 sec.

wait for a bit and think about how to solve it best.

I have already made up my mind and thought about this for a year now. My mind is set. I want this and I know how I want it to be like I described before.

@LukeOwncloud

As I understand right, the main issue here is: If you save photos in your owncloud the required memory fast exceeds the available memory on current smartphones. And that is true from today's view. Don't we all agree on this? So as I see it, the question is what to do about it.

Yes you understood it correclty.

add a storage limit for owncloud offline files. owncloud will remove least recent used (or oldest) files which exceed limit (starred files will be exempted, of course).

Good proposal but I think it should be all or nothing. The option should be if you want to save - not if you want to delete. Your proposal still fills up the memory. Especially today with cameras that can shoot in 4K. We are talking GB files.

jancborchardt commented 10 years ago

@enoch85 all the issues you linked are duplicates of #346. I don’t say »no«, I have the same problem. But this issue here is different from it so please don’t throw them together and act as if I’m against »all people demanding features«.

I think the storage limit is a strange inbetween solution. Then you never know exactly what is on your phone and what isn’t.

Just a bit of research: Dropbox doesn’t mark viewed items as downloaded. But they have it in the cache. And in the settings it’s displayed how much of the cache is used and you can clear it there.

@enoch85 it indeed seems like the switch is a good solution. The only problem I have with it is that it’s a case of »sometimes you want it, sometimes you don’t«, for which a setting is generally a bad solution. We need to work towards things which work for everyone – the advanced settings would be hell if we’d build in a switch for each and every single edge-case.

jancborchardt commented 10 years ago

That said, I just noticed this thread is closed – it should indeed be reopened.

jancborchardt commented 10 years ago

And btw @enoch85 if you want to participate more in the discussions around the Android app, maybe you want to join the #owncloud-android IRC channel. :)

tobiasKaminsky commented 10 years ago

@enoch85

Good proposal but I think it should be all or nothing. The option should be if you want to save - not if you want to delete. Your proposal still fills up the memory. Especially today with cameras that can shoot in 4K. We are talking GB files.

Do you really need the full size image? Once again (as you have not commented it) I would suggest to use thumbnails ~1024x768 or so. These thumbnails will be cached in a max 100Mb cache. So there will never be the problem that the app uses too much memory. Except if you long press a particular image and download the e.g. 12Mb file. But that is your (the users) choice and then he cannot complain that the app uses memory storage...

enoch85 commented 10 years ago

@jancborchardt

But this issue here is different from it so please don’t throw them together and act as if I’m against »all people demanding features«.

Sorry if I sounded a bit harsh. But I´ve seen your decisions now over the past year, and you tend to say no to many ideas because it´s interfering with the design. Not all ofc, and you do a great job, but I just think you should be more open to ideas other than what only you think is good. :)

the advanced settings would be hell if we’d build in a switch for each and every single edge-case.

I´m not saying that every idea is good, but an idea that many users demand should be consider(d?). I mean, me and other that have been giving out free time and effort to report bugs and stuff for over a year now (or longer) should be listened to. I think it´s fun, and I like to make things better for all users, same as you.

I think the storage limit is a strange inbetween solution. Then you never know exactly what is on your phone and what isn’t.

Totally agree.

And btw @enoch85 if you want to participate more in the discussions around the Android app, maybe you want to join the #owncloud-android IRC channel. :)

I´m already in the design team, that´s enough for now ;)

@tobiasKaminsky

Do you really need the full size image?

No, if they are big enough to be viewed with good enough quality for just swiping trough.

Except if you long press a particular image and download the e.g. 12Mb file. But that is your (the users) choice and then he cannot complain that the app uses memory storage...

It feels like you finally are understanding my point :)

enoch85 commented 10 years ago

@jancborchardt And thank you for finally understanding, and reopened this issue. :+1:

tobiasKaminsky commented 10 years ago

It feels like you finally are understanding my point :)

I thought I had understood your point long time ago ;) The reason why I explained my point of view in longer way is that our solutions differ: You want to remove the files or store them only temporally, but I want to cache them as they do not get downloaded again and again. Therefore I think it is better to use smaller thumbnails, but always sufficient to view them without notable quality issues in picture slide show...

enoch85 commented 10 years ago

I thought I had understood your point long time ago ;)

Just had to be sure. ;) So the change will be to use #239? That´s a good start, but the thumbnails should be used as options as well. For example; long-pressing would generate a dropdown menu with different choices as share, save, and so on. Don´t you think?

stefan-niedermann commented 10 years ago

did you thought about my compromiss suggestion?

´´´ i maybe have another solution: download and keep the files while browsing, so if you go back, you don't have to download it again (like it is now). But: If you press android back-button (leave the image viewer), delete the downloaded files. ´´´

tobiasKaminsky commented 10 years ago

I do not know where you live, but in germany data traffic is very limited. You pay e.g. 10€/month for 500MB with 7,2 Mbit/s and then it down to GPRS for the rest of the months. So it is necessary to obey the total data transfer, especially when this will be done automatically. So I think it is not a good idea to delete a file once it is downloaded (except the user trigger this manually).

@enoch85 what do you mean with "thumbnails used as options"? With my idea there is no difference: The user does not see that it is a thumbnail. He can open, share, view it just like normal. The only difference is that it is a smaller version. Only if the user manually clicks "download" the file will get replaced by the original (e.g. 12mb) file.

enoch85 commented 10 years ago

@stefan-niedermann

i maybe have another solution: download and keep the files while browsing, so if you go back, you don't have to download it again (like it is now). But: If you press android back-button (leave the image viewer), delete the downloaded files.

I like your idea! But at the same time, how should we communicate to the end-users that pressing the back-button deletes the local files?

@tobiasKaminsky In Sweden we are more fortunate. I have 51GB data with 4G speed (64 Mb/s) for like €40 per month.

what do you mean with "thumbnails used as options"?

What I mean is that when you long-press on the thumbnail / picture there should appear options like [share] [save] [delete] and so on.

Do you have a PR for this already? Please link it here in that case.

tobiasKaminsky commented 10 years ago

Just an addition to my idea: When viewing an image it gets downloaded as a reduced image (thumbnail) and get stored until the image gets deleted on the server (<- my idea) Addition: To make it clearer for the user that it is only a thumbnail that is stored, there should be an option when the user wants to share it: "Share reduced version" (shares thumbnail) "Share original version" (downloads full image, deletes bigger thumbnail, shares full image)

Also the "download" option should be more specific and saying "download original size image".

enoch85 commented 10 years ago

One of the things that annoys me the most is that @jancborchardt is talking about that it will take XX ms to swipe and for the picture to load. But as it is today there is a big and ugly white screen with a big yellow bar that´s showing that the file is downloaded and that shows for a longer time than a few ms. That is worse than having to wait XX ms for the next picture to show. Please, pleease change that, or download the picture in the background if that´s necessary. (No offence by this text @jancborchardt just quoting you)

@tobiasKaminsky

When viewing an image it gets downloaded as a reduced image (thumbnail) and get stored until the image gets deleted on the server (<- my idea)

This issue is not about download the pictures, it´s about NOT downloading the pictures. :)

jancborchardt commented 10 years ago

Well, instead of a big and ugly white screen with an ugly big yellow bar we need a black screen with a nice standard new Android loading bar. @davivel can you do that?

enoch85 commented 10 years ago

@jancborchardt Sorry four sounding so harsh, just mean well. :)

I think we should go with the ownCloud colors. Blue and white.

enoch85 commented 10 years ago

Like this:

image

Sorry for tacky spinner.

tobiasKaminsky commented 10 years ago

This issue is not about download the pictures, it´s about NOT downloading the pictures. :)

I think it is related: Not downloading/storing the pictures is for low data plans (not you ;) ) a problem, so we have to think about a solution that works for all. So for me it is a good idea to download only reduced version and store them. (Again we can also add a cache limit, e.g. 100mb).

jancborchardt commented 10 years ago

@enoch85 here’s the design reasoning for black background + progress bar:

(And btw @enoch85, if you want to get started with mockups check out Pencil. Important as well is to write down the exact design reasoning apart from just the mockups.)

enoch85 commented 10 years ago

@tobiasKaminsky @jancborchardt Ok, so what is the conclusion of all this? It seems like my original idea isn´t going to happen,or is it? Let it be a choice anyway.

( @jancborchardt Thanks for the tip! :smiley: )

enoch85 commented 10 years ago

Here is a fix: https://github.com/owncloud/android/issues/340#issuecomment-61554681

davivel commented 10 years ago

@enoch85 , @jancborchardt , about the ugly progress bar: that's only shown when the file is downloading; once it's down and you view it again, that progress bar is not show; replacing the ugly bar with a pretty bar is just a matter of junior_job.

About the rest of the party ... jackie-chan

jancborchardt commented 10 years ago

@davivel @enoch85 opened an issue about the style at https://github.com/owncloud/android/issues/710

enoch85 commented 10 years ago

@jancborchardt @davivel So, what is the conclusion?

Should we download every picture when viewing them or not? I vote not.

davivel commented 10 years ago

Well, there is no conclusion here yet, AFAIK. Feel free to discuss about it as much as you need until coming to an agreement.

But, please, take into account: @jancborchardt is the UX expert, and any agreement needs, necessarily, to include him.

About my POV: I see space for different "user profiles" depending on different values for the more characteristic constraints in mobility: storage and network availability and consumption.

I would love that the app is able to satisfy the different profiles, but IMHO we should * fully * satisfy one of them first, and then the others. At this point I don't think we are satisfying none. In few words, we need much more downloading/synchronizing full folders than this.

On the while, to me the key is finding a good way to let the users choose a profile or other. But in terms of implementation, moving our focus to this "browser profile" will probably mean do not ever finishing the "synchronized profile" that is in our focus now.

LukeOwlclaw commented 10 years ago

Wasn't caching(or storing/downloading; whatever you want to call it) a reduced versions of images (~1024x768) a comprise we could agree on? Plus option: Download full size. Plus some kind of cache limit (e.g. 100MB).

About not storing/caching at all like @enoch85 suggests: I can only think about one other use case where caching is explicitly disabled: private mode in Internet browsers. Otherwise caching is pretty much state of the art and should be implemented in some way. Maybe private browsing would be a feature which could be added in the feature. Right now I agree with @davivel: We should we one profile straight first (and if that is a good comprise already - even better!)

LukeOwlclaw commented 10 years ago

I just saw @jancborchardt comment:

Dropbox doesn’t mark viewed items as downloaded. But they have it in the cache. And in the settings it’s displayed how much of the cache is used and you can clear it there.

I think I also implied introducing a "cache" next to the local "owncloud storage". Thinking about it I find it a bad idea as it makes 1) source code more complex and difficult to maintain and 2) things less transparent for the user, as he does not know what in the cache.

My POV: Reduced images should be stored in the "owncloud storage", marking them as reduced version, e.g. by appending the size (_1024_768). Inside the owncloud app this files should however appear with the real file name with a symbol indicating that it is a reduced version. Once the full size image is loaded the _1024_768 file will be deleted.

LukeOwlclaw commented 10 years ago

Quick afterthought: @enoch85 You are aware that you can delete whole folders just on your phone, aren't you? Sure that is not what you want, but it is just one extra click. I just opened https://github.com/owncloud/android/issues/712 so you can see which folders use how/too much storage.

enoch85 commented 10 years ago

Ok, I won't continue this anymore. I just hope that this discussion have shed some light on the issue and that it's on the roadmap for the future. Until then, I just bought a 32GB Nexus instead, and auto-delete cache/misc (or whatever ;) ) so I have solved the issue using a workaround.

Just for the record, this feature have been requested in 2012 already, and not until now something is happening.

Thanks to all you devs making ownCloud better. I wish I could code aswell because then I wouldn't have to be the bad guy here, I could just make it happen.