diff options
Diffstat (limited to 'News-Android-App/src/main/java/de/luhmer/owncloudnewsreader')
-rw-r--r-- | News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/events/podcast/OpenAudioPodcastEvent.java | 9 | ||||
-rw-r--r-- | News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/events/podcast/OpenPodcastEvent.java | 17 | ||||
-rw-r--r-- | News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/helper/MenuUtilsSherlockFragmentActivity.java | 226 | ||||
-rw-r--r-- | News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/model/AudioPodcastItem.java | 12 | ||||
-rw-r--r-- | News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/model/PodcastItem.java | 19 | ||||
-rw-r--r-- | News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/services/PodcastPlaybackService.java (renamed from News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/services/AudioPodcastService.java) | 87 |
6 files changed, 103 insertions, 267 deletions
diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/events/podcast/OpenAudioPodcastEvent.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/events/podcast/OpenAudioPodcastEvent.java deleted file mode 100644 index 22f6e604..00000000 --- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/events/podcast/OpenAudioPodcastEvent.java +++ /dev/null @@ -1,9 +0,0 @@ -package de.luhmer.owncloudnewsreader.events.podcast; - -/** - * Created by David on 21.06.2014. - */ -public class OpenAudioPodcastEvent { - public String pathToFile; - public String mediaTitle; -} diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/events/podcast/OpenPodcastEvent.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/events/podcast/OpenPodcastEvent.java new file mode 100644 index 00000000..ade8ebfb --- /dev/null +++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/events/podcast/OpenPodcastEvent.java @@ -0,0 +1,17 @@ +package de.luhmer.owncloudnewsreader.events.podcast; + +/** + * Created by David on 21.06.2014. + */ +public class OpenPodcastEvent { + + public OpenPodcastEvent(String pathToFile, String mediaTitle, boolean isVideoFile) { + this.pathToFile = pathToFile; + this.mediaTitle = mediaTitle; + this.isVideoFile = isVideoFile; + } + + public boolean isVideoFile; + public String pathToFile; + public String mediaTitle; +} diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/helper/MenuUtilsSherlockFragmentActivity.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/helper/MenuUtilsSherlockFragmentActivity.java deleted file mode 100644 index ef395650..00000000 --- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/helper/MenuUtilsSherlockFragmentActivity.java +++ /dev/null @@ -1,226 +0,0 @@ -/** -* Android ownCloud News -* -* @author David Luhmer -* @copyright 2013 David Luhmer david-dev@live.de -* -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE -* License as published by the Free Software Foundation; either -* version 3 of the License, or any later version. -* -* This library is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU AFFERO GENERAL PUBLIC LICENSE for more details. -* -* You should have received a copy of the GNU Affero General Public -* License along with this library. If not, see <http://www.gnu.org/licenses/>. -* -*/ - -package de.luhmer.owncloudnewsreader.helper; - -import android.annotation.TargetApi; -import android.os.Build; -import android.preference.PreferenceManager; -import android.support.v4.app.FragmentActivity; -import android.util.Log; -import android.widget.Toast; - -import com.actionbarsherlock.app.SherlockDialogFragment; -import com.actionbarsherlock.app.SherlockFragmentActivity; -import com.actionbarsherlock.view.Menu; -import com.actionbarsherlock.view.MenuInflater; -import com.actionbarsherlock.view.MenuItem; - -import de.luhmer.owncloudnewsreader.Constants; -import de.luhmer.owncloudnewsreader.NewsReaderDetailFragment; -import de.luhmer.owncloudnewsreader.NewsReaderListActivity; -import de.luhmer.owncloudnewsreader.R; -import de.luhmer.owncloudnewsreader.VersionInfoDialogFragment; -import de.luhmer.owncloudnewsreader.database.DatabaseConnection; -import de.luhmer.owncloudnewsreader.reader.IReader; -import de.luhmer.owncloudnewsreader.reader.OnAsyncTaskCompletedListener; -import de.luhmer.owncloudnewsreader.reader.owncloud.API; -import de.luhmer.owncloudnewsreader.reader.owncloud.OwnCloud_Reader; - -public class MenuUtilsSherlockFragmentActivity extends SherlockFragmentActivity { - - protected static final String TAG = "MenuUtils"; - - static FragmentActivity activity; - - static MenuItem menuItemSettings; - static MenuItem menuItemLogin; - static MenuItem menuItemStartImageCaching; - - - private static MenuItem menuItemUpdater; - private static MenuItem menuItemDownloadMoreItems; - - static IReader _Reader; - - /** - * @return the menuItemUpdater - */ - public static MenuItem getMenuItemUpdater() { - return menuItemUpdater; - } - - - /** - * @return the menuItemDownloadMoreItems - */ - public static MenuItem getMenuItemDownloadMoreItems() { - return menuItemDownloadMoreItems; - } - - - @TargetApi(Build.VERSION_CODES.HONEYCOMB) - @Override - protected void onResume() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { - invalidateOptionsMenu(); - } - super.onResume(); - } - - - public static void onCreateOptionsMenu(Menu menu, MenuInflater inflater, FragmentActivity act) { - inflater.inflate(R.menu.news_reader, menu); - activity = act; - - menuItemSettings = menu.findItem(R.id.action_settings); - menuItemLogin = menu.findItem(R.id.action_login); - menuItemStartImageCaching = menu.findItem(R.id.menu_StartImageCaching); - - menuItemUpdater = menu.findItem(R.id.menu_update); - //menuItemMarkAllAsRead = menu.findItem(R.id.menu_markAllAsRead); - menuItemDownloadMoreItems = menu.findItem(R.id.menu_downloadMoreItems); - - - //menuItemMarkAllAsRead.setEnabled(false); - menuItemDownloadMoreItems.setEnabled(false); - - NewsReaderDetailFragment ndf = ((NewsReaderDetailFragment) activity.getSupportFragmentManager().findFragmentById(R.id.content_frame)); - if(ndf != null) - ndf.UpdateMenuItemsState(); - } - - public static boolean onOptionsItemSelected(MenuItem item, FragmentActivity activity) { - switch (item.getItemId()) { - case R.id.menu_About_Changelog: - SherlockDialogFragment dialog = new VersionInfoDialogFragment(); - dialog.show(activity.getSupportFragmentManager(), "VersionChangelogDialogFragment"); - return true; - - case R.id.menu_markAllAsRead: - NewsReaderDetailFragment ndf = ((NewsReaderDetailFragment) activity.getSupportFragmentManager().findFragmentById(R.id.content_frame)); - if(ndf != null) - { - /* - for(int i = 0; i < ndf.getListView().getChildCount(); i++) - { - View view = ndf.getListView().getChildAt(i); - CheckBox cb = (CheckBox) view.findViewById(R.id.cb_lv_item_read); - if(!cb.isChecked()) - cb.setChecked(true); - } - */ - - DatabaseConnection dbConn = new DatabaseConnection(activity); - try { - /* - //dbConn.markAllItemsAsRead(ndf.getDatabaseIdsOfItems()); - List<Integer> items = new ArrayList<Integer>(); - - - Cursor cursor = ncla.getLvAdapter().getCursor(); - cursor.moveToFirst(); - do { - items.add(Integer.parseInt(cursor.getString(0))); - } while (cursor.moveToNext()); - dbConn.markAllItemsAsRead(items); - */ - dbConn.markAllItemsAsReadForCurrentView(); - } finally { - dbConn.closeDatabase(); - } - ndf.UpdateCursor(); - - //If tablet view is enabled update the listview as well - if(activity instanceof NewsReaderListActivity) - ((NewsReaderListActivity) activity).updateAdapter(); - - } - return true; - - case R.id.menu_downloadMoreItems: - DownloadMoreItems(); - return true; - } - return false; - } - - private static void DownloadMoreItems() - { - /* - DatabaseConnection dbConn = new DatabaseConnection(activity); - int count = dbConn.getCountFeedsForFolder(SubscriptionExpandableListAdapter.ALL_ITEMS, false); - if(count >= Constants.maxItemsCount) - { - String text = activity.getString(R.string.max_items_count_reached); - text = text.replace("XX", "" + Constants.maxItemsCount); - new AlertDialog.Builder(activity) - .setTitle(activity.getString(R.string.empty_view_header)) - .setMessage(text) - .setPositiveButton(activity.getString(android.R.string.ok), new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog,int id) { - - } - }) - .create() - .show(); - //Toast.makeText(activity, text, Toast.LENGTH_LONG).show(); - } - else - {*/ - String username = PreferenceManager.getDefaultSharedPreferences(activity.getApplicationContext()).getString("edt_username", ""); - String password = PreferenceManager.getDefaultSharedPreferences(activity.getApplicationContext()).getString("edt_password", ""); - - if(username != null) { - _Reader = new OwnCloud_Reader(); - ((OwnCloud_Reader)_Reader).Start_AsyncTask_GetVersion(Constants.TaskID_GetVersion, activity, onAsyncTaskGetVersionFinished, username, password); - - Toast.makeText(activity, activity.getString(R.string.toast_GettingMoreItems), Toast.LENGTH_SHORT).show(); - } - //} - } - - static OnAsyncTaskCompletedListener onAsyncTaskGetVersionFinished = new OnAsyncTaskCompletedListener() { - - @Override - public void onAsyncTaskCompleted(int task_id, Object task_result) { - if(_Reader != null) { - String appVersion = task_result.toString(); - API api = API.GetRightApiForVersion(appVersion, activity); - ((OwnCloud_Reader) _Reader).setApi(api); - - NewsReaderDetailFragment ndf = ((NewsReaderDetailFragment) activity.getSupportFragmentManager().findFragmentById(R.id.content_frame)); - _Reader.Start_AsyncTask_GetOldItems(Constants.TaskID_GetItems, activity, onAsyncTaskComplete, ndf.getIdFeed(), ndf.getIdFolder()); - } - } - }; - - static OnAsyncTaskCompletedListener onAsyncTaskComplete = new OnAsyncTaskCompletedListener() { - @Override - public void onAsyncTaskCompleted(int task_id, Object task_result) { - NewsReaderDetailFragment ndf = ((NewsReaderDetailFragment) activity.getSupportFragmentManager().findFragmentById(R.id.content_frame)); - if(ndf != null) - ndf.UpdateCursor(); - - Log.d(TAG, "Finished Download extra items.."); - } - }; -}
\ No newline at end of file diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/model/AudioPodcastItem.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/model/AudioPodcastItem.java deleted file mode 100644 index 7b796faa..00000000 --- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/model/AudioPodcastItem.java +++ /dev/null @@ -1,12 +0,0 @@ -package de.luhmer.owncloudnewsreader.model; - -/** - * Created by David on 21.06.2014. - */ -public class AudioPodcastItem { - - public String itemId; - public String title; - public String link; - public String mimeType; -} diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/model/PodcastItem.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/model/PodcastItem.java new file mode 100644 index 00000000..7fb53e4e --- /dev/null +++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/model/PodcastItem.java @@ -0,0 +1,19 @@ +package de.luhmer.owncloudnewsreader.model; + +import java.io.Serializable; + +/** + * Created by David on 21.06.2014. + */ +public class PodcastItem implements Serializable { + + public String itemId; + public String title; + public String link; + public String mimeType; + + public int downloadProgress; + + public static int DOWNLOAD_COMPLETED = -1; + public static int DOWNLOAD_NOT_STARTED = -2; +} diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/services/AudioPodcastService.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/services/PodcastPlaybackService.java index 9fe56b8a..7a656ba2 100644 --- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/services/AudioPodcastService.java +++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/services/PodcastPlaybackService.java @@ -5,17 +5,19 @@ import android.content.Intent; import android.media.MediaPlayer; import android.os.Handler; import android.os.IBinder; +import android.view.SurfaceHolder; import java.io.IOException; import de.greenrobot.event.EventBus; import de.luhmer.owncloudnewsreader.events.podcast.OpenAudioPodcastEvent; +import de.luhmer.owncloudnewsreader.events.podcast.RegisterVideoOutput; import de.luhmer.owncloudnewsreader.events.podcast.TogglePlayerStateEvent; import de.luhmer.owncloudnewsreader.events.podcast.UpdatePodcastStatusEvent; import de.luhmer.owncloudnewsreader.events.podcast.WindPodcast; import de.luhmer.owncloudnewsreader.view.PodcastNotification; -public class AudioPodcastService extends Service { +public class PodcastPlaybackService extends Service { PodcastNotification podcastNotification; @@ -26,17 +28,27 @@ public class AudioPodcastService extends Service { super.onCreate(); } - public AudioPodcastService() { + public PodcastPlaybackService() { mediaPlayer = new MediaPlayer(); mHandler = new Handler(); eventBus = EventBus.getDefault(); eventBus.register(this); + + + mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { + @Override + public void onPrepared(MediaPlayer mediaPlayer) { + play(); + isPreparing = false; + } + }); + mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mediaPlayer) { - mHandler.removeCallbacks(mUpdateTimeTask); + pause();//Send the over signal } }); @@ -44,6 +56,7 @@ public class AudioPodcastService extends Service { //openFile("/sdcard/Music/#Musik/Finest Tunes/Netsky - Running Low (Ft. Beth Ditto).mp3"); } + @Override public IBinder onBind(Intent intent) { // TODO: Return the communication channel to the service. @@ -73,22 +86,6 @@ public class AudioPodcastService extends Service { mediaPlayer.reset(); mediaPlayer.setDataSource(pathToFile); mediaPlayer.prepareAsync(); - - mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { - @Override - public void onPrepared(MediaPlayer mediaPlayer) { - play(); - isPreparing = false; - } - }); - - mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { - @Override - public void onCompletion(MediaPlayer mediaPlayer) { - pause();//Send the over signal - } - }); - } catch (IOException e) { e.printStackTrace(); isPreparing = false; @@ -126,6 +123,13 @@ public class AudioPodcastService extends Service { openFile(event.pathToFile, event.mediaTitle); } + public void onEvent(RegisterVideoOutput videoOutput) { + if(mediaPlayer != null) { + //getHolder().addCallback(videoOutput); + videoOutput.surfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); + } + } + @@ -137,7 +141,9 @@ public class AudioPodcastService extends Service { } public void pause() { - mediaPlayer.pause(); + if(mediaPlayer.isPlaying()) + mediaPlayer.pause(); + mHandler.removeCallbacks(mUpdateTimeTask); sendMediaStatus(); @@ -167,4 +173,45 @@ public class AudioPodcastService extends Service { eventBus.post(audioPodcastEvent); } + + + + SurfaceHolder.Callback mSHCallback = new SurfaceHolder.Callback() + { + public void surfaceChanged(SurfaceHolder holder, int format, + int w, int h) + { + mSurfaceWidth = w; + mSurfaceHeight = h; + if (mIsPrepared && mVideoWidth == w && mVideoHeight == h) { + if (mSeekWhenPrepared != 0) { + mMediaPlayer.seekTo(mSeekWhenPrepared); + } + mMediaPlayer.start(); + if (mMediaController != null) { + mMediaController.show(); + } + } + } + + public void surfaceCreated(SurfaceHolder holder) + { + mSurfaceHolder = holder; + openVideo(); + } + + public void surfaceDestroyed(SurfaceHolder holder) + { + // after we return from this we can't use the surface any more + mSurfaceHolder = null; + if (mMediaController != null) mMediaController.hide(); + if (mMediaPlayer != null) { + mMediaPlayer.reset(); + mMediaPlayer.release(); + mMediaPlayer = null; + } + } + }; + + } |