Fixed Service starting process + Bugs
This commit is contained in:
parent
5a9798680b
commit
d1db888141
@ -26,7 +26,7 @@
|
|||||||
<activity android:name="de.podfetcher.activity.FeedlistActivity"/>
|
<activity android:name="de.podfetcher.activity.FeedlistActivity"/>
|
||||||
<activity android:name="de.podfetcher.activity.AddFeedActivity"/>
|
<activity android:name="de.podfetcher.activity.AddFeedActivity"/>
|
||||||
|
|
||||||
<service android:enabled="true" android:name="de.podfetcher.service.DownloadService" />
|
<service android:enabled="true" android:name="de.podfetcher.service.DownloadService" />
|
||||||
<service android:enabled="true" android:name="de.podfetcher.service.FeedSyncService" >
|
<service android:enabled="true" android:name="de.podfetcher.service.FeedSyncService" >
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="action.de.podfetcher.storage.feed_download_completed"></action>
|
<action android:name="action.de.podfetcher.storage.feed_download_completed"></action>
|
||||||
|
@ -2,16 +2,45 @@ package de.podfetcher.activity;
|
|||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.widget.Button;
|
||||||
|
import android.widget.EditText;
|
||||||
|
import android.view.View;
|
||||||
import de.podfetcher.R;
|
import de.podfetcher.R;
|
||||||
|
import de.podfetcher.feed.FeedManager;
|
||||||
|
|
||||||
/** Activity for adding/editing a Feed */
|
/** Activity for adding/editing a Feed */
|
||||||
public class AddFeedActivity extends Activity {
|
public class AddFeedActivity extends Activity {
|
||||||
|
|
||||||
|
private EditText etxtFeedurl;
|
||||||
|
private Button butConfirm;
|
||||||
|
private FeedManager manager;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
setContentView(R.layout.addfeed);
|
setContentView(R.layout.addfeed);
|
||||||
|
|
||||||
|
manager = FeedManager.getInstance();
|
||||||
|
|
||||||
|
etxtFeedurl = (EditText) findViewById(R.id.etxtFeedurl);
|
||||||
|
butConfirm = (Button) findViewById(R.id.butConfirm);
|
||||||
|
|
||||||
|
butConfirm.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
addNewFeed();
|
||||||
|
finish();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addNewFeed() {
|
||||||
|
String url = etxtFeedurl.getText().toString();
|
||||||
|
manager.addFeed(this, url);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,24 +1,55 @@
|
|||||||
package de.podfetcher.activity;
|
package de.podfetcher.activity;
|
||||||
|
|
||||||
import de.podfetcher.R;
|
import de.podfetcher.R;
|
||||||
|
import de.podfetcher.feed.FeedManager;
|
||||||
|
import de.podfetcher.gui.FeedlistAdapter;
|
||||||
|
import de.podfetcher.service.FeedSyncService;
|
||||||
|
import de.podfetcher.storage.DownloadRequester;
|
||||||
import greendroid.app.GDListActivity;
|
import greendroid.app.GDListActivity;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import greendroid.widget.ActionBarItem.Type;
|
import greendroid.widget.ActionBarItem.Type;
|
||||||
import greendroid.widget.ActionBarItem;
|
import greendroid.widget.ActionBarItem;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.IntentFilter;
|
||||||
|
import android.content.BroadcastReceiver;
|
||||||
|
import android.content.Context;
|
||||||
|
|
||||||
|
|
||||||
public class FeedlistActivity extends GDListActivity {
|
public class FeedlistActivity extends GDListActivity {
|
||||||
|
|
||||||
|
private FeedManager manager;
|
||||||
|
private FeedlistAdapter fla;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
|
manager = FeedManager.getInstance();
|
||||||
|
fla = new FeedlistAdapter(this, R.layout.feedlist_item, 0, manager.getFeeds());
|
||||||
|
setListAdapter(fla);
|
||||||
|
|
||||||
addActionBarItem(Type.Add, R.id.action_bar_add);
|
addActionBarItem(Type.Add, R.id.action_bar_add);
|
||||||
addActionBarItem(Type.Refresh, R.id.action_bar_refresh);
|
addActionBarItem(Type.Refresh, R.id.action_bar_refresh);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
IntentFilter filter = new IntentFilter();
|
||||||
|
filter.addAction(FeedSyncService.ACTION_FEED_SYNC_COMPLETED);
|
||||||
|
filter.addAction(DownloadRequester.ACTION_IMAGE_DOWNLOAD_COMPLETED);
|
||||||
|
|
||||||
|
registerReceiver(contentUpdate, filter);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onPause() {
|
||||||
|
super.onPause();
|
||||||
|
unregisterReceiver(contentUpdate);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onHandleActionBarItemClick(ActionBarItem item, int position) {
|
public boolean onHandleActionBarItemClick(ActionBarItem item, int position) {
|
||||||
switch(item.getItemId()) {
|
switch(item.getItemId()) {
|
||||||
@ -29,4 +60,11 @@ public class FeedlistActivity extends GDListActivity {
|
|||||||
return super.onHandleActionBarItemClick(item, position);
|
return super.onHandleActionBarItemClick(item, position);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private BroadcastReceiver contentUpdate = new BroadcastReceiver() {
|
||||||
|
@Override
|
||||||
|
public void onReceive(Context context, Intent intent) {
|
||||||
|
fla.notifyDataSetChanged();
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
@ -181,6 +181,10 @@ public class FeedManager {
|
|||||||
}
|
}
|
||||||
return items;
|
return items;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ArrayList<Feed> getFeeds() {
|
||||||
|
return feeds;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -26,6 +26,8 @@ public class FeedlistAdapter extends ArrayAdapter<Feed> {
|
|||||||
this.resource = resource;
|
this.resource = resource;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public View getView(int position, View convertView, ViewGroup parent) {
|
public View getView(int position, View convertView, ViewGroup parent) {
|
||||||
LinearLayout feedlistView;
|
LinearLayout feedlistView;
|
||||||
@ -45,8 +47,9 @@ public class FeedlistAdapter extends ArrayAdapter<Feed> {
|
|||||||
ImageView imageView = (ImageView)feedlistView.findViewById(R.id.imgvFeedimage);
|
ImageView imageView = (ImageView)feedlistView.findViewById(R.id.imgvFeedimage);
|
||||||
TextView txtvFeedname = (TextView)feedlistView.findViewById(R.id.txtvFeedname);
|
TextView txtvFeedname = (TextView)feedlistView.findViewById(R.id.txtvFeedname);
|
||||||
TextView txtvNewEpisodes = (TextView)feedlistView.findViewById(R.id.txtvNewEpisodes);
|
TextView txtvNewEpisodes = (TextView)feedlistView.findViewById(R.id.txtvNewEpisodes);
|
||||||
|
if(feed.getImage() != null) {
|
||||||
imageView.setImageURI(Uri.fromFile(new File(feed.getFile_url()))); // TODO select default picture when no image downloaded
|
imageView.setImageURI(Uri.fromFile(new File(feed.getFile_url()))); // TODO select default picture when no image downloaded
|
||||||
|
}
|
||||||
txtvFeedname.setText(feed.getTitle());
|
txtvFeedname.setText(feed.getTitle());
|
||||||
// TODO find new Episodes txtvNewEpisodes.setText(feed)
|
// TODO find new Episodes txtvNewEpisodes.setText(feed)
|
||||||
return feedlistView;
|
return feedlistView;
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
package de.podfetcher.service;
|
package de.podfetcher.service;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
import de.podfetcher.feed.*;
|
import de.podfetcher.feed.*;
|
||||||
import de.podfetcher.storage.DownloadRequester;
|
import de.podfetcher.storage.DownloadRequester;
|
||||||
import android.app.Service;
|
import android.app.Service;
|
||||||
@ -15,6 +16,7 @@ import android.content.IntentFilter;
|
|||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
import android.content.BroadcastReceiver;
|
import android.content.BroadcastReceiver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
public class DownloadService extends Service {
|
public class DownloadService extends Service {
|
||||||
|
|
||||||
@ -25,6 +27,7 @@ public class DownloadService extends Service {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate() {
|
public void onCreate() {
|
||||||
|
Log.d(this.toString(), "Service started");
|
||||||
registerReceiver(receiver, createIntentFilter());
|
registerReceiver(receiver, createIntentFilter());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -78,15 +81,14 @@ public class DownloadService extends Service {
|
|||||||
requester.removeFeedByID(intent.getLongExtra(DownloadRequester.EXTRA_ITEM_ID, -1));
|
requester.removeFeedByID(intent.getLongExtra(DownloadRequester.EXTRA_ITEM_ID, -1));
|
||||||
// Get Feed Information
|
// Get Feed Information
|
||||||
Feed feed = manager.getFeed(intent.getLongExtra(DownloadRequester.EXTRA_ITEM_ID, -1));
|
Feed feed = manager.getFeed(intent.getLongExtra(DownloadRequester.EXTRA_ITEM_ID, -1));
|
||||||
feed.setFile_url(requester.getFeedfilePath(context) + requester.getFeedfileName(feed.getId()));
|
feed.setFile_url((new File(requester.getFeedfilePath(context), requester.getFeedfileName(feed.getId()))).toString());
|
||||||
// Update Information in Database
|
// Update Information in Database
|
||||||
manager.setFeed(context, feed);
|
manager.setFeed(context, feed);
|
||||||
// Download Feed Image if provided
|
// Download Feed Image if provided
|
||||||
if(feed.getImage() != null) {
|
if(feed.getImage() != null) {
|
||||||
requester.downloadImage(context, feed.getImage());
|
requester.downloadImage(context, feed.getImage());
|
||||||
}
|
}
|
||||||
// Notify FeedSyncService about the new Feed
|
context.startService(intent);
|
||||||
sendBroadcast(intent);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -95,7 +97,6 @@ public class DownloadService extends Service {
|
|||||||
requester.removeImageByID(intent.getLongExtra(DownloadRequester.EXTRA_ITEM_ID, -1));
|
requester.removeImageByID(intent.getLongExtra(DownloadRequester.EXTRA_ITEM_ID, -1));
|
||||||
FeedImage image = manager.getFeedImage(intent.getLongExtra(DownloadRequester.EXTRA_ITEM_ID, -1));
|
FeedImage image = manager.getFeedImage(intent.getLongExtra(DownloadRequester.EXTRA_ITEM_ID, -1));
|
||||||
image.setFile_url(requester.getImagefilePath(context) + requester.getImagefileName(image.getId()));
|
image.setFile_url(requester.getImagefilePath(context) + requester.getImagefileName(image.getId()));
|
||||||
sendBroadcast(intent);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,7 @@ import android.content.IntentFilter;
|
|||||||
import android.content.BroadcastReceiver;
|
import android.content.BroadcastReceiver;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
|
||||||
public class FeedSyncService extends Service {
|
public class FeedSyncService extends Service {
|
||||||
@ -31,6 +32,7 @@ public class FeedSyncService extends Service {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate() {
|
public void onCreate() {
|
||||||
|
Log.d(this.toString(), "Service started");
|
||||||
executor = new ScheduledThreadPoolExecutor(Runtime.getRuntime().availableProcessors() + 2);
|
executor = new ScheduledThreadPoolExecutor(Runtime.getRuntime().availableProcessors() + 2);
|
||||||
manager = FeedManager.getInstance();
|
manager = FeedManager.getInstance();
|
||||||
requester = DownloadRequester.getInstance();
|
requester = DownloadRequester.getInstance();
|
||||||
@ -44,6 +46,7 @@ public class FeedSyncService extends Service {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDestroy() {
|
public void onDestroy() {
|
||||||
|
sendBroadcast(new Intent(ACTION_FEED_SYNC_COMPLETED));
|
||||||
unregisterReceiver(allFeedsDownloaded);
|
unregisterReceiver(allFeedsDownloaded);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -100,6 +103,7 @@ public class FeedSyncService extends Service {
|
|||||||
FeedHandler handler = new FeedHandler();
|
FeedHandler handler = new FeedHandler();
|
||||||
|
|
||||||
feed = handler.parseFeed(feed);
|
feed = handler.parseFeed(feed);
|
||||||
|
Log.d(this.toString(), feed.getTitle() + " parsed");
|
||||||
// Add Feeditems to the database
|
// Add Feeditems to the database
|
||||||
for(FeedItem item : feed.getItems()) {
|
for(FeedItem item : feed.getItems()) {
|
||||||
manager.addFeedItem(service, item);
|
manager.addFeedItem(service, item);
|
||||||
|
@ -6,6 +6,7 @@ import java.io.File;
|
|||||||
import de.podfetcher.feed.Feed;
|
import de.podfetcher.feed.Feed;
|
||||||
import de.podfetcher.feed.FeedImage;
|
import de.podfetcher.feed.FeedImage;
|
||||||
import de.podfetcher.feed.FeedMedia;
|
import de.podfetcher.feed.FeedMedia;
|
||||||
|
import de.podfetcher.service.DownloadService;
|
||||||
|
|
||||||
import android.app.DownloadManager;
|
import android.app.DownloadManager;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
@ -22,9 +23,9 @@ public class DownloadRequester {
|
|||||||
public static String ACTION_IMAGE_DOWNLOAD_COMPLETED = "action.de.podfetcher.storage.image_download_completed";
|
public static String ACTION_IMAGE_DOWNLOAD_COMPLETED = "action.de.podfetcher.storage.image_download_completed";
|
||||||
|
|
||||||
private static boolean STORE_ON_SD = true;
|
private static boolean STORE_ON_SD = true;
|
||||||
public static String IMAGE_DOWNLOADPATH = "images";
|
public static String IMAGE_DOWNLOADPATH = "images/";
|
||||||
public static String FEED_DOWNLOADPATH = "cache";
|
public static String FEED_DOWNLOADPATH = "cache/";
|
||||||
public static String MEDIA_DOWNLOADPATH = "media";
|
public static String MEDIA_DOWNLOADPATH = "media/";
|
||||||
|
|
||||||
|
|
||||||
private static DownloadRequester downloader;
|
private static DownloadRequester downloader;
|
||||||
@ -56,6 +57,7 @@ public class DownloadRequester {
|
|||||||
// TODO Set Allowed Network Types
|
// TODO Set Allowed Network Types
|
||||||
DownloadManager manager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
|
DownloadManager manager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
|
||||||
Intent i = new Intent(action);
|
Intent i = new Intent(action);
|
||||||
|
context.startService(new Intent(context, DownloadService.class));
|
||||||
i.putExtra(EXTRA_DOWNLOAD_ID, manager.enqueue(request));
|
i.putExtra(EXTRA_DOWNLOAD_ID, manager.enqueue(request));
|
||||||
i.putExtra(EXTRA_ITEM_ID, id);
|
i.putExtra(EXTRA_ITEM_ID, id);
|
||||||
type.add(i);
|
type.add(i);
|
||||||
@ -139,7 +141,7 @@ public class DownloadRequester {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public String getFeedfilePath(Context context) {
|
public String getFeedfilePath(Context context) {
|
||||||
return context.getExternalFilesDir(FEED_DOWNLOADPATH).toString();
|
return context.getExternalFilesDir(FEED_DOWNLOADPATH).toString() + "/";
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getFeedfileName(long id) {
|
public String getFeedfileName(long id) {
|
||||||
@ -147,7 +149,7 @@ public class DownloadRequester {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public String getImagefilePath(Context context) {
|
public String getImagefilePath(Context context) {
|
||||||
return context.getExternalFilesDir(IMAGE_DOWNLOADPATH).toString();
|
return context.getExternalFilesDir(IMAGE_DOWNLOADPATH).toString() + "/";
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getImagefileName(long id) {
|
public String getImagefileName(long id) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user