Trying to prevent deep sleeping during big exports. (export would totally stall, and then resume when device was woken up). Not really what was wanted. Testing this out....

This commit is contained in:
Mark Gillespie 2017-01-20 08:38:13 +00:00
parent 6529c82896
commit b503cfb966
3 changed files with 32 additions and 2 deletions

View file

@ -25,6 +25,7 @@
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<application <application
android:allowBackup="true" android:allowBackup="true"

View file

@ -22,8 +22,10 @@
package re.jcg.playmusicexporter.fragments; package re.jcg.playmusicexporter.fragments;
import android.content.Context;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.os.PowerManager;
import android.support.design.widget.FloatingActionButton; import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.text.TextUtils; import android.text.TextUtils;
@ -63,6 +65,7 @@ public class MusicTrackListFragment extends Fragment {
*/ */
public static final String ARG_MUSIC_TRACK_LIST_ID = "music_track_list_id"; public static final String ARG_MUSIC_TRACK_LIST_ID = "music_track_list_id";
public static final String ARG_MUSIC_TRACK_LIST_TYPE = "music_track_list_type"; public static final String ARG_MUSIC_TRACK_LIST_TYPE = "music_track_list_type";
private PowerManager.WakeLock m_CPULock;
/** /**
* The track list * The track list
@ -138,6 +141,8 @@ public class MusicTrackListFragment extends Fragment {
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
PowerManager powerManager = (PowerManager)this.getContext().getSystemService(Context.POWER_SERVICE);
m_CPULock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "ExportAllService");
if (getArguments().containsKey(ARG_MUSIC_TRACK_LIST_ID) if (getArguments().containsKey(ARG_MUSIC_TRACK_LIST_ID)
&& getArguments().containsKey(ARG_MUSIC_TRACK_LIST_TYPE)) { && getArguments().containsKey(ARG_MUSIC_TRACK_LIST_TYPE)) {
@ -213,12 +218,19 @@ public class MusicTrackListFragment extends Fragment {
mFloatingButtonExport = (FloatingActionButton) rootView.findViewById(R.id.floating_button_export); mFloatingButtonExport = (FloatingActionButton) rootView.findViewById(R.id.floating_button_export);
mFloatingButtonExport.setOnClickListener(new View.OnClickListener() { mFloatingButtonExport.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v)
{
m_CPULock.acquire();
// Export all selected tracks // Export all selected tracks
for (SelectedTrack selectedTrack : SelectedTrackList.getInstance().getSelectedItems()) { for (SelectedTrack selectedTrack : SelectedTrackList.getInstance().getSelectedItems()) {
selectedTrack.export(getActivity()); selectedTrack.export(getActivity());
} }
if ( m_CPULock.isHeld())
{
m_CPULock.release();
}
// Clear the selection // Clear the selection
SelectedTrackList.getInstance().clear(true); SelectedTrackList.getInstance().clear(true);
} }

View file

@ -4,6 +4,7 @@ import android.app.IntentService;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.os.PowerManager;
import android.support.v4.provider.DocumentFile; import android.support.v4.provider.DocumentFile;
import android.util.Log; import android.util.Log;
@ -24,6 +25,7 @@ public class ExportAllService extends IntentService {
public static final String TAG = "AutoGPME_ExportService"; public static final String TAG = "AutoGPME_ExportService";
public static final String ACTION_EXPORT = "re.jcg.playmusicexporter.action.EXPORT"; public static final String ACTION_EXPORT = "re.jcg.playmusicexporter.action.EXPORT";
public static final String ACTION_SET_EXPORT_JOB = "re.jcg.playmusicexporter.action.SET_EXPORT_JOB"; public static final String ACTION_SET_EXPORT_JOB = "re.jcg.playmusicexporter.action.SET_EXPORT_JOB";
private PowerManager.WakeLock m_CPULock;
public static void startExport(Context pContext) { public static void startExport(Context pContext) {
Intent lIntent = new Intent(pContext, ExportAllService.class); Intent lIntent = new Intent(pContext, ExportAllService.class);
@ -32,8 +34,11 @@ public class ExportAllService extends IntentService {
Log.i(TAG, "Intent sent!"); Log.i(TAG, "Intent sent!");
} }
public ExportAllService() { public ExportAllService()
{
super("AutoGPME-ExportService"); super("AutoGPME-ExportService");
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
m_CPULock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "ExportAllService");
} }
protected void onHandleIntent(Intent intent) { protected void onHandleIntent(Intent intent) {
@ -62,6 +67,7 @@ public class ExportAllService extends IntentService {
Log.i(TAG, lUri.toString()); Log.i(TAG, lUri.toString());
AlbumDataSource lAlbumDataSource = new AlbumDataSource(lPlayMusicManager); AlbumDataSource lAlbumDataSource = new AlbumDataSource(lPlayMusicManager);
lAlbumDataSource.setOfflineOnly(true); lAlbumDataSource.setOfflineOnly(true);
m_CPULock.acquire();
List<Album> lAlba = lAlbumDataSource.getAll(); List<Album> lAlba = lAlbumDataSource.getAll();
for (Album lAlbum : lAlba) { for (Album lAlbum : lAlba) {
for (MusicTrack lTrack : lAlbum.getMusicTrackList()) { for (MusicTrack lTrack : lAlbum.getMusicTrackList()) {
@ -84,9 +90,20 @@ public class ExportAllService extends IntentService {
Log.i(TAG, "Automatic export failed, because the URI is invalid."); Log.i(TAG, "Automatic export failed, because the URI is invalid.");
} else throw e; } else throw e;
} }
finally
{
if ( m_CPULock.isHeld())
{
m_CPULock.release();
}
}
} }
} }
} }
if ( m_CPULock.isHeld())
{
m_CPULock.release();
}
} }
private String getStringForTrack(MusicTrack pTrack) { private String getStringForTrack(MusicTrack pTrack) {