diff options
author | Assam Boudjelthia <assam.boudjelthia@qt.io> | 2020-05-07 12:49:24 +0300 |
---|---|---|
committer | Assam Boudjelthia <assam.boudjelthia@qt.io> | 2020-05-25 19:11:28 +0300 |
commit | 8ebbdcc7c4a0c2c6f863060500136b9399eccf98 (patch) | |
tree | 752b634e4b5c31e010805bc676d339d0696b0c65 /examples/androidextras/musiclist/android/src/org/qtproject/example/musiclist/MusicList.java | |
parent | 8a28edbc63e009e9c888e77eeca98c6ecf40afc1 (diff) |
Add example to demonstrate working with custom Java objects/ArrayList
An example that retrieves music data from Java APIs, and store that in
a Java ArrayList of objects. Then, how to pass that data to Qt via C++
and QML.
Pick-to: 5.15
Task-number: QTBUG-83038
Change-Id: I5201572b997973388c688ca0d3f2f30240da12f6
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
Diffstat (limited to 'examples/androidextras/musiclist/android/src/org/qtproject/example/musiclist/MusicList.java')
-rw-r--r-- | examples/androidextras/musiclist/android/src/org/qtproject/example/musiclist/MusicList.java | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/examples/androidextras/musiclist/android/src/org/qtproject/example/musiclist/MusicList.java b/examples/androidextras/musiclist/android/src/org/qtproject/example/musiclist/MusicList.java new file mode 100644 index 0000000..d4dc840 --- /dev/null +++ b/examples/androidextras/musiclist/android/src/org/qtproject/example/musiclist/MusicList.java @@ -0,0 +1,113 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtAndroidExtras module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +package org.qtproject.example.musiclist; + +import android.content.ContentResolver; +import android.content.Context; +import android.database.Cursor; +import android.net.Uri; +import android.provider.MediaStore; +import java.util.ArrayList; + +public class MusicList { + + static ArrayList<MusicTrack> fetchMusicList(Context context) { + ArrayList<MusicTrack> musicList = new ArrayList<MusicTrack>(); + Cursor songCursor; + + try { + ContentResolver contentResolver = context.getContentResolver(); + Uri songUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; + songCursor = contentResolver.query(songUri, null, null, null, null); + } catch (SecurityException e) { + e.printStackTrace(); + return musicList; + } + + if (songCursor != null && songCursor.moveToFirst()) + { + int title = songCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE); + int artist = songCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST); + int duration = duration = songCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION); + + do { + String currentTitle = songCursor.getString(title); + String currentArtist = songCursor.getString(artist); + long currentDuration = songCursor.getLong(duration); + musicList.add(new MusicTrack(currentTitle, currentArtist, currentDuration)); + } while (songCursor.moveToNext()); + } + + if (songCursor != null) + songCursor.close(); + + return musicList; + } +} + +class MusicTrack { + + private String title; + private String artist; + private long duration; + + MusicTrack (String title, String artist, long duration) { + this.title = title; + this.artist = artist; + this.duration = duration; + } + + public String getTitle() { return title; } + + public String getArtist() { return artist; } + + public long getDuration() { return duration; } +} |