I swapped these to reflect where my music is stored
For large music archives the method FileList gets unresponsive.... use the asynchronous method FileListAsync instead
From the documentation
FileList
Return a list of filenames of a given directory.
Use this method for specific directories to get back a result immediately. To get a list for a complete device or sdcard, which may take a few seconds, use the FileListAsync method instead.
Taifun
Also make sure there are music files available on your internal (emulated) sdcard... it looks like no file was found?
Try @Anke 's modified version, which asks for permissions... the example is already a few years old...
Taifun
This has all been great, and I really do appreciate all the input from all of you;Sunny, Taifun, Tim, Anke. I will play around with what I have now, and bend it all to suit my requirements. I hope this may put an end to the questions, but as the whole android file structure seems to me an incredibly over complicated control device, I will most likely be back.
Charley
In addendum: why does g[lobal listMusic] not show in the list view? And how would one make it show in a list view?
Is your question probably "why is the list empty"?
are there mp3 or m4a files in your directory /storage/emulated/0/Music
available?
the blocks look fine like this...
did you
use Do it to debug your blocks, see also tip 4 here App Inventor: How to Learn | Pura Vida Apps
see also Live Development, Testing, and Debugging Tools
Taifun
Trying to push the limits! Snippets, Tutorials and Extensions from Pura Vida Apps by Taifun.
I did right click n Do it. I get [] as a result. Th juke box still plays music though
if music is playing, then there are music files and then the list can't be empty... I currently do not know, why you get an empty list
To refresh your listview try the Refresh method
https://ai2-appinventor-mit-edu.ezproxy.canberra.edu.au/reference/components/userinterface.html#ListView
Refresh()
Reload the ListView to reflect any changes in the data.
Taifun
Sorry Taifun, it doesn't work until I compile it and install it onto my phone. I wasn't thinking when I posted the question.
maybe my question should be: where is the Music directory on a chrome book? it does not come with one, except in Play Files, but it is not read from there.
I am now in a place I didn't want to be, trying to shape someone else's program to suit my needs. I originally wanted to know how the user (me) can select a directory in which music files are, have the app read the files in situ and then allow the user, (again, me) set up playlists from that selection.
Addendum: It's all a moot point now, as I have found that even having a FilePicker control just creates a blank screen, and nothing loads, no other controls at all. Was there an update to the companion?
well, I don't know, I do not have a Chromebook... usually we work with Android devices here...
but you could use a file manager to find it out yourself...
the file extension and its FileList method also is able to scan the complete storage of the device... use an empty string as directoryName in this case... and as scanning the complete device might take its time, use the FileListAsync method else the device gets unresponsive
obviously you always should use the latest version, which currently is 2.68
here is the latest download link http://ai2.appinventor.mit.edu.ezproxy.canberra.edu.au/companions/MITAI2Companion.apk
Anke's updated version runs fine on Samsung Galaxy A54 running Android 13 both in companion app and after building
Taifun
One question, did you sideload your APK onto the Chromebook, or upload it to the Playstore, then install from there?
Android apps on a Chromebook run in a sandbox separate from the rest of the Chromebook content. For the most part, you should consider running an Android app on a Chromebook as running it an emulator for all intents and purposes.
However, the File Manager: "Files", provides a folder called "Play Files" which contains directories for shared storage directories such as Music, Documents etc. It is possible to copy/paste files from other locations in the chromebook to these directories, which are then accessible from within apps.... (tested using Total Commander)
Sure, but this is no different from if you use a virtual machine program like VirtualBox to run a VM. VirtualBox allows me to map directories from the host into the client. However, that is controlled by VirtualBox and if I don't enable the option the VM has no choice. Similarly, you can take content from ChromeOS (the host) and move it into the Android environment (i.e., "Play Files") but there's nothing to guarantee you can go the other direction, especially without any sort of user intervention.