Merge branch 'develop'
|
@ -12,6 +12,7 @@ trans.de = res/values-de/strings.xml
|
|||
trans.es = res/values-es/strings.xml
|
||||
trans.es_ES = res/values-es-rES/strings.xml
|
||||
trans.fr = res/values-fr/strings.xml
|
||||
trans.he_IL = res/values-he-rIL/strings.xml
|
||||
trans.hi_IN = res/values-hi-rIN/strings.xml
|
||||
trans.it_IT = res/values-it-rIT/strings.xml
|
||||
trans.ko = res/values-ko/strings.xml
|
||||
|
|
|
@ -1,42 +1,42 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="de.danoeh.antennapod"
|
||||
android:versionCode="35"
|
||||
android:versionName="0.9.8.2" >
|
||||
package="de.danoeh.antennapod"
|
||||
android:versionCode="36"
|
||||
android:versionName="0.9.8.3">
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="android.permission.WAKE_LOCK"/>
|
||||
|
||||
<uses-sdk
|
||||
android:minSdkVersion="10"
|
||||
android:targetSdkVersion="19" />
|
||||
android:targetSdkVersion="19"/>
|
||||
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
||||
|
||||
<supports-screens
|
||||
android:anyDensity="true"
|
||||
android:largeScreens="true"
|
||||
android:normalScreens="true"
|
||||
android:smallScreens="true"
|
||||
android:xlargeScreens="true" />
|
||||
android:xlargeScreens="true"/>
|
||||
|
||||
<uses-feature
|
||||
android:name="android.hardware.screen.portrait"
|
||||
android:required="false" />
|
||||
android:required="false"/>
|
||||
<uses-feature
|
||||
android:name="android.hardware.touchscreen"
|
||||
android:required="false" />
|
||||
android:required="false"/>
|
||||
|
||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
|
||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
|
||||
|
||||
<application
|
||||
android:name="de.danoeh.antennapod.PodcastApp"
|
||||
android:icon="@drawable/ic_launcher"
|
||||
android:label="@string/app_name"
|
||||
android:logo="@drawable/ic_launcher"
|
||||
android:theme="@style/Theme.AntennaPod.Light" >
|
||||
android:theme="@style/Theme.AntennaPod.Light">
|
||||
<activity
|
||||
android:name=".activity.MainActivity"
|
||||
android:configChanges="keyboardHidden|orientation"
|
||||
|
@ -60,7 +60,8 @@
|
|||
android:windowSoftInputMode="adjustResize">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value="de.danoeh.antennapod.activity.MainActivity" />
|
||||
android:value="de.danoeh.antennapod.activity.MainActivity"/>
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW"/>
|
||||
|
||||
|
@ -114,7 +115,7 @@
|
|||
android:configChanges="orientation|screenSize">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value="de.danoeh.antennapod.activity.MainActivity" />
|
||||
android:value="de.danoeh.antennapod.activity.MainActivity"/>
|
||||
<meta-data
|
||||
android:name="android.app.default_searchable"
|
||||
android:value="de.danoeh.antennapod.activity.SearchActivity"/>
|
||||
|
@ -131,14 +132,14 @@
|
|||
android:exported="true">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value="de.danoeh.antennapod.activity.MainActivity" />
|
||||
</activity>
|
||||
android:value="de.danoeh.antennapod.activity.MainActivity"/>
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".activity.AudioplayerActivity"
|
||||
android:launchMode="singleTop">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value="de.danoeh.antennapod.activity.MainActivity" />
|
||||
android:value="de.danoeh.antennapod.activity.MainActivity"/>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW"/>
|
||||
|
||||
|
@ -150,6 +151,10 @@
|
|||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<activity
|
||||
android:name=".activity.DownloadAuthenticationActivity"
|
||||
android:launchMode="singleInstance"/>
|
||||
|
||||
<service
|
||||
android:name=".service.download.DownloadService"
|
||||
android:enabled="true"/>
|
||||
|
@ -170,14 +175,14 @@
|
|||
android:label="@string/settings_label">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value="de.danoeh.antennapod.activity.MainActivity" />
|
||||
android:value="de.danoeh.antennapod.activity.MainActivity"/>
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".activity.DownloadLogActivity"
|
||||
android:label="@string/download_log_label">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value="de.danoeh.antennapod.activity.DownloadActivity" />
|
||||
android:value="de.danoeh.antennapod.activity.DownloadActivity"/>
|
||||
</activity>
|
||||
|
||||
<receiver
|
||||
|
@ -303,7 +308,7 @@
|
|||
android:label="@string/miro_guide_label">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value="de.danoeh.antennapod.activity.AddFeedActivity" />
|
||||
android:value="de.danoeh.antennapod.activity.AddFeedActivity"/>
|
||||
<meta-data
|
||||
android:name="android.app.default_searchable"
|
||||
android:value="de.danoeh.antennapod.activity.MiroGuideSearchActivity"/>
|
||||
|
@ -328,7 +333,7 @@
|
|||
android:configChanges="keyboardHidden|orientation">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value="de.danoeh.antennapod.activity.MiroGuideMainActivity" />
|
||||
android:value="de.danoeh.antennapod.activity.MiroGuideMainActivity"/>
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".activity.MiroGuideChannelViewActivity"
|
||||
|
@ -336,7 +341,7 @@
|
|||
android:label="@string/miro_guide_label">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value="de.danoeh.antennapod.activity.MiroGuideCategoryActivity" />
|
||||
android:value="de.danoeh.antennapod.activity.MiroGuideCategoryActivity"/>
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".activity.VideoplayerActivity"
|
||||
|
@ -344,7 +349,7 @@
|
|||
android:screenOrientation="landscape">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value="de.danoeh.antennapod.activity.MainActivity" />
|
||||
android:value="de.danoeh.antennapod.activity.MainActivity"/>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW"/>
|
||||
|
||||
|
@ -360,28 +365,30 @@
|
|||
android:label="@string/playback_history_label">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value="de.danoeh.antennapod.activity.MainActivity" />
|
||||
</activity>
|
||||
android:value="de.danoeh.antennapod.activity.MainActivity"/>
|
||||
</activity>
|
||||
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value="de.danoeh.antennapod.activity.MainActiviy" />
|
||||
android:value="de.danoeh.antennapod.activity.MainActiviy"/>
|
||||
<activity
|
||||
android:name=".activity.DirectoryChooserActivity"
|
||||
android:label="@string/choose_data_directory">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value="de.danoeh.antennapod.activity.PreferenceActivity" />
|
||||
</activity>
|
||||
android:value="de.danoeh.antennapod.activity.PreferenceActivity"/>
|
||||
</activity>
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value="de.danoeh.antennapod.activity.PreferenceActivity" />
|
||||
android:value="de.danoeh.antennapod.activity.PreferenceActivity"/>
|
||||
|
||||
<activity
|
||||
android:name=".activity.OrganizeQueueActivity"
|
||||
android:configChanges="orientation"
|
||||
android:label="@string/organize_queue_label">
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value="de.danoeh.antennapod.activity.MainActivity" />
|
||||
android:value="de.danoeh.antennapod.activity.MainActivity"/>
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".activity.gpoddernet.GpodnetMainActivity"
|
||||
|
@ -396,7 +403,7 @@
|
|||
android:resource="@xml/gpodnet_searchable"/>
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value="de.danoeh.antennapod.activity.AddFeedActivity" />
|
||||
android:value="de.danoeh.antennapod.activity.AddFeedActivity"/>
|
||||
|
||||
</activity>
|
||||
<activity
|
||||
|
@ -410,7 +417,7 @@
|
|||
android:resource="@xml/gpodnet_searchable"/>
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value="de.danoeh.antennapod.activity.gpoddernet.GpodnetMainActivity" />
|
||||
android:value="de.danoeh.antennapod.activity.gpoddernet.GpodnetMainActivity"/>
|
||||
</activity>
|
||||
|
||||
<activity
|
||||
|
@ -421,12 +428,13 @@
|
|||
<intent-filter>
|
||||
<action android:name="android.intent.action.SEARCH"/>
|
||||
</intent-filter>
|
||||
|
||||
<meta-data
|
||||
android:name="android.app.searchable"
|
||||
android:resource="@xml/gpodnet_searchable"/>
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value="de.danoeh.antennapod.activity.gpoddernet.GpodnetMainActivity" />
|
||||
android:value="de.danoeh.antennapod.activity.gpoddernet.GpodnetMainActivity"/>
|
||||
</activity>
|
||||
|
||||
<activity
|
||||
|
@ -444,7 +452,7 @@
|
|||
</intent-filter>
|
||||
<meta-data
|
||||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value="de.danoeh.antennapod.activity.PreferenceActivity" />
|
||||
android:value="de.danoeh.antennapod.activity.PreferenceActivity"/>
|
||||
</activity>
|
||||
|
||||
|
||||
|
@ -465,6 +473,11 @@
|
|||
android:scheme="package"/>
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
<receiver android:name=".receiver.SPAReceiver">
|
||||
<intent-filter>
|
||||
<action android:name="de.danoeh.antennapdsp.intent.SP_APPS_QUERY_FEEDS_RESPONSE"/>
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
|
|
|
@ -1,6 +1,13 @@
|
|||
Change Log
|
||||
==========
|
||||
|
||||
Version 0.9.8.3
|
||||
---------------
|
||||
* Added support for password-protected feeds and episodes
|
||||
* Added support for more types of episode images
|
||||
* Added Hebrew translation
|
||||
* Several bugfixes and improvements
|
||||
|
||||
Version 0.9.8.2
|
||||
---------------
|
||||
* Several bugfixes and improvements
|
||||
|
|
|
@ -31,3 +31,4 @@ Hindi: siddhusengar
|
|||
Dutch: e2jk
|
||||
Polish (Poland): Mephistofeles, shark103, tyle
|
||||
Korean: changwoo
|
||||
Hebrew: amir.dafnyman
|
||||
|
|
|
@ -0,0 +1,202 @@
|
|||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
|
@ -0,0 +1,16 @@
|
|||
A subclass of the Android ListView component that enables drag
|
||||
and drop re-ordering of list items.
|
||||
|
||||
Copyright 2012 Carl Bauer
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
|
@ -0,0 +1,202 @@
|
|||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
|
@ -0,0 +1,202 @@
|
|||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
|
@ -0,0 +1,13 @@
|
|||
Copyright 2011, Aocate, Inc.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
|
@ -41,7 +41,7 @@
|
|||
<div id="header" align="center">
|
||||
<img src="logo.png" alt="Logo" width="100px" height="100px"/>
|
||||
|
||||
<p>AntennaPod, Version 0.9.8.2</p>
|
||||
<p>AntennaPod, Version 0.9.8.3</p>
|
||||
|
||||
<p>Copyright © 2012 Daniel Oeh</p>
|
||||
|
||||
|
@ -50,15 +50,15 @@
|
|||
<h1>Used libraries</h1>
|
||||
|
||||
<h2>NineOldAndroids <a href="http://nineoldandroids.com">(Link)</a></h2>
|
||||
by Jake Wharton, licensed under the Apache 2.0 license
|
||||
by Jake Wharton, licensed under the Apache 2.0 license <a href="LICENSE_NINE_OLD_ANDROIDS.txt">(View)</a>
|
||||
|
||||
<h2>Apache Commons <a href="http://commons.apache.org/">(Link)</a></h2>
|
||||
by The Apache Software Foundation, licensed under the Apache 2.0 license
|
||||
by The Apache Software Foundation, licensed under the Apache 2.0 license <a href="LICENSE_APACHE_COMMONS.txt">(View)</a>
|
||||
<h2>flattr4j <a href="http://www.shredzone.org/projects/flattr4j/wiki">(Link)</a></h2>
|
||||
licensed under the Apache 2.0 license
|
||||
licensed under the Apache 2.0 license <a href="LICENSE_FLATTR4J.txt">(View)</a>
|
||||
<h2>drag-sort-listview <a href="https://github.com/bauerca/drag-sort-listview">(Link)</a></h2>
|
||||
licensed under the Apache 2.0 license
|
||||
licensed under the Apache 2.0 license <a href="LICENSE_DSLV.txt">(View)</a>
|
||||
<h2>Presto Client <a href="http://www.aocate.com/presto/">(Link)</a></h2>
|
||||
licensed under the Apache 2.0 license
|
||||
licensed under the Apache 2.0 license <a href="LICENSE_PRESTO.txt">(View)</a>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -17,11 +17,6 @@ dependencies {
|
|||
println "Creating libs directory"
|
||||
libsdir.mkdir()
|
||||
}
|
||||
def prestoLib = new File('libs/presto_client-0.8.5.jar')
|
||||
if (!prestoLib.exists()) {
|
||||
println "Downloading presto library into libs folder"
|
||||
new URL('http://www.aocate.com/presto/client/presto_client-0.8.5.jar').withInputStream{ i -> prestoLib.withOutputStream{ it << i }}
|
||||
}
|
||||
|
||||
compile 'com.android.support:appcompat-v7:19.0.+'
|
||||
compile 'org.apache.commons:commons-lang3:3.2.1'
|
||||
|
@ -33,7 +28,6 @@ dependencies {
|
|||
compile 'commons-io:commons-io:2.4'
|
||||
compile 'com.nineoldandroids:library:2.4.0'
|
||||
compile project(':submodules:dslv:library')
|
||||
compile files('libs/presto_client-0.8.5.jar')
|
||||
}
|
||||
|
||||
android {
|
||||
|
|
2
pom.xml
|
@ -5,7 +5,7 @@
|
|||
<groupId>de.danoeh</groupId>
|
||||
<artifactId>antennapod</artifactId>
|
||||
<packaging>apk</packaging>
|
||||
<version>0.9.8.2</version>
|
||||
<version>0.9.8.3</version>
|
||||
<name>AntennaPod</name>
|
||||
|
||||
|
||||
|
|
After Width: | Height: | Size: 467 B |
After Width: | Height: | Size: 648 B |
After Width: | Height: | Size: 293 B |
After Width: | Height: | Size: 460 B |
After Width: | Height: | Size: 529 B |
After Width: | Height: | Size: 882 B |
After Width: | Height: | Size: 1.2 KiB |
|
@ -1,143 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/footer"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="48dp"
|
||||
android:focusableInTouchMode="true"
|
||||
android:layout_alignParentBottom="true">
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dip"
|
||||
android:layout_alignParentTop="true"
|
||||
android:background="?android:attr/dividerVertical"/>
|
||||
|
||||
<View
|
||||
android:id="@+id/horizontal_divider"
|
||||
android:layout_width="1dip"
|
||||
android:layout_height="fill_parent"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_marginBottom="4dp"
|
||||
android:layout_marginTop="4dp"
|
||||
android:background="?android:attr/dividerVertical"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/butCancel"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_toLeftOf="@id/horizontal_divider"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:text="@string/cancel_label"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/butConfirm"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_toRightOf="@id/horizontal_divider"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:text="@string/confirm_label"/>
|
||||
</RelativeLayout>
|
||||
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_above="@id/footer"
|
||||
android:layout_alignParentTop="true"
|
||||
android:scrollbars="vertical">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txtvFeedurl"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_margin="16dp"
|
||||
android:textSize="@dimen/text_size_large"
|
||||
android:textColor="@color/bright_blue"
|
||||
android:textStyle="italic"
|
||||
android:text="@string/txtvfeedurl_label"/>
|
||||
|
||||
<EditText
|
||||
android:id="@+id/etxtFeedurl"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/txtvFeedurl"
|
||||
android:layout_margin="8dp"
|
||||
android:hint="@string/feedurl_label"
|
||||
android:inputType="textUri"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txtvPodcastDirectories"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/etxtFeedurl"
|
||||
android:layout_margin="8dp"
|
||||
android:textSize="@dimen/text_size_large"
|
||||
android:textColor="@color/bright_blue"
|
||||
android:textStyle="italic"
|
||||
android:text="@string/podcastdirectories_label"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/butBrowseGpoddernet"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/txtvPodcastDirectories"
|
||||
android:layout_margin="8dp"
|
||||
android:text="@string/gpodnet_main_label"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/butBrowseMiroguide"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/butBrowseGpoddernet"
|
||||
android:layout_margin="8dp"
|
||||
android:text="@string/miro_guide_label"/>
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txtvOpmlImport"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/butBrowseMiroguide"
|
||||
android:layout_margin="8dp"
|
||||
android:textSize="@dimen/text_size_large"
|
||||
android:textColor="@color/bright_blue"
|
||||
android:textStyle="italic"
|
||||
android:text="@string/opml_import_label"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txtvOpmlImportExpl"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/txtvOpmlImport"
|
||||
android:layout_margin="8dp"
|
||||
android:text="@string/opml_import_txtv_button_lable"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/butOpmlImport"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/txtvOpmlImportExpl"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:layout_marginLeft="8dp"
|
||||
android:layout_marginRight="8dp"
|
||||
android:text="@string/opml_import_label"/>
|
||||
</RelativeLayout>
|
||||
</ScrollView>
|
||||
|
||||
</RelativeLayout>
|
|
@ -0,0 +1,92 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txtvTitle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/authentication_notification_title"
|
||||
android:layout_alignParentTop="true"
|
||||
android:textSize="@dimen/text_size_large"
|
||||
android:layout_margin="16dp"
|
||||
android:textColor="@color/bright_blue"
|
||||
android:textStyle="italic"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txtvDescription"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/authentication_notification_msg"
|
||||
android:layout_below="@id/txtvTitle"
|
||||
android:textSize="@dimen/text_size_medium"
|
||||
android:textColor="?android:attr/textColorSecondary"
|
||||
android:layout_margin="16dp"/>
|
||||
|
||||
<EditText
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="16dp"
|
||||
android:id="@+id/etxtUsername"
|
||||
android:hint="@string/username_label"
|
||||
android:layout_below="@id/txtvDescription"/>
|
||||
|
||||
<EditText
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="16dp"
|
||||
android:id="@+id/etxtPassword"
|
||||
android:hint="@string/password_label"
|
||||
android:inputType="textPassword"
|
||||
android:layout_below="@id/etxtUsername"/>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/footer"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="48dp"
|
||||
android:focusableInTouchMode="true"
|
||||
android:layout_alignParentBottom="true">
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dip"
|
||||
android:layout_alignParentTop="true"
|
||||
android:background="?android:attr/dividerVertical"/>
|
||||
|
||||
<View
|
||||
android:id="@+id/horizontal_divider"
|
||||
android:layout_width="1dip"
|
||||
android:layout_height="fill_parent"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_marginBottom="4dp"
|
||||
android:layout_marginTop="4dp"
|
||||
android:background="?android:attr/dividerVertical"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/butCancel"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_toLeftOf="@id/horizontal_divider"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:text="@string/cancel_label"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/butConfirm"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_toRightOf="@id/horizontal_divider"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:text="@string/confirm_label"/>
|
||||
</RelativeLayout>
|
||||
|
||||
|
||||
</RelativeLayout>
|
|
@ -4,33 +4,9 @@
|
|||
android:layout_height="fill_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/footer"
|
||||
style="@android:style/ButtonBar"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<Button
|
||||
android:id="@+id/butConfirm"
|
||||
android:layout_width="0px"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="@string/confirm_label"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/butCancel"
|
||||
android:layout_width="0px"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="@string/cancel_label"/>
|
||||
</LinearLayout>
|
||||
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_above="@id/footer"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_alignParentTop="true"
|
||||
android:scrollbars="vertical">
|
||||
|
||||
|
@ -58,11 +34,19 @@
|
|||
android:hint="@string/feedurl_label"
|
||||
android:inputType="textUri"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/butConfirm"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/etxtFeedurl"
|
||||
android:layout_margin="8dp"
|
||||
android:text="@string/confirm_label"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txtvPodcastDirectories"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/etxtFeedurl"
|
||||
android:layout_below="@id/butConfirm"
|
||||
android:layout_margin="8dp"
|
||||
android:textSize="@dimen/text_size_large"
|
||||
android:textColor="@color/bright_blue"
|
||||
|
|
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txtvTitle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/authentication_notification_title"
|
||||
android:layout_alignParentTop="true"
|
||||
android:textSize="@dimen/text_size_large"
|
||||
android:layout_margin="16dp"
|
||||
android:textColor="@color/bright_blue"
|
||||
android:textStyle="italic"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txtvDescription"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/authentication_notification_msg"
|
||||
android:layout_below="@id/txtvTitle"
|
||||
android:textSize="@dimen/text_size_medium"
|
||||
android:textColor="?android:attr/textColorSecondary"
|
||||
android:layout_margin="16dp"/>
|
||||
|
||||
<EditText
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="16dp"
|
||||
android:id="@+id/etxtUsername"
|
||||
android:hint="@string/username_label"
|
||||
android:layout_below="@id/txtvDescription"/>
|
||||
|
||||
<EditText
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="16dp"
|
||||
android:id="@+id/etxtPassword"
|
||||
android:hint="@string/password_label"
|
||||
android:inputType="textPassword"
|
||||
android:layout_below="@id/etxtUsername"/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/footer"
|
||||
style="@android:style/ButtonBar"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<Button
|
||||
android:id="@+id/butConfirm"
|
||||
android:layout_width="0px"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="@string/confirm_label"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/butCancel"
|
||||
android:layout_width="0px"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="@string/cancel_label"/>
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
</RelativeLayout>
|
|
@ -234,4 +234,5 @@
|
|||
<!--Online feed view-->
|
||||
<string name="downloading_label">Yükləmə...</string>
|
||||
<!--Content descriptions for image buttons-->
|
||||
<!--AntennaPodSP-->
|
||||
</resources>
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
<string name="download_error_unsupported_type">Tipus de canal no suportat</string>
|
||||
<string name="download_error_connection_error">Error de connexió</string>
|
||||
<string name="download_error_unknown_host">Amfitrió desconegut</string>
|
||||
<string name="download_error_unauthorized">Error d\'autenticació</string>
|
||||
<string name="cancel_all_downloads_label">Cancel·la totes les baixades</string>
|
||||
<string name="download_cancelled_msg">S\'ha cancel·lat la baixada</string>
|
||||
<string name="download_report_title">Baixades completades</string>
|
||||
|
@ -104,6 +105,8 @@
|
|||
<string name="download_type_media">Fitxer</string>
|
||||
<string name="download_type_image">Imatge</string>
|
||||
<string name="download_request_error_dialog_message_prefix">S\'ha produït un error en intentar baixar el fitxer:\u0020</string>
|
||||
<string name="authentication_notification_title">Cal autenticar-se</string>
|
||||
<string name="authentication_notification_msg">Es necessita un usuari i una contrasenya per accedir al recurs</string>
|
||||
<!--Mediaplayer messages-->
|
||||
<string name="player_error_msg">Error</string>
|
||||
<string name="player_stopped_msg">No s\'està reproduint res</string>
|
||||
|
@ -321,4 +324,6 @@
|
|||
<string name="in_queue_label">S\'ha afegit l\'episodi a la cua</string>
|
||||
<string name="new_episodes_count_label">Nombre d\'episodis nous</string>
|
||||
<string name="in_progress_episodes_count_label">Nombre d\'episodis que heu començat a escoltar</string>
|
||||
<!--AntennaPodSP-->
|
||||
<string name="sp_apps_importing_feeds_msg">S\'estan important les subscripcions des de les apps de propòsit únic...</string>
|
||||
</resources>
|
||||
|
|
|
@ -291,4 +291,5 @@
|
|||
<string name="subscribed_label">Odebíráno</string>
|
||||
<string name="downloading_label">Stahuji...</string>
|
||||
<!--Content descriptions for image buttons-->
|
||||
<!--AntennaPodSP-->
|
||||
</resources>
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
<string name="download_error_unsupported_type">Feed type er ikke understøttet</string>
|
||||
<string name="download_error_connection_error">Forbindelsesfejl</string>
|
||||
<string name="download_error_unknown_host">Ukendt vært</string>
|
||||
<string name="download_error_unauthorized">Godkendelses fejl</string>
|
||||
<string name="cancel_all_downloads_label">Annuller alle downloads</string>
|
||||
<string name="download_cancelled_msg">Download afbrudt</string>
|
||||
<string name="download_report_title">Downloads afsluttet</string>
|
||||
|
@ -104,6 +105,8 @@
|
|||
<string name="download_type_media">Medie fil</string>
|
||||
<string name="download_type_image">Billede</string>
|
||||
<string name="download_request_error_dialog_message_prefix">En fejl opstod under download af filen:\u0020</string>
|
||||
<string name="authentication_notification_title">Godkendelses krævet</string>
|
||||
<string name="authentication_notification_msg">Den ressource du efterspurgte kræver et brugernavn og et password</string>
|
||||
<!--Mediaplayer messages-->
|
||||
<string name="player_error_msg">Fejl!</string>
|
||||
<string name="player_stopped_msg">Ingen medier afspiller</string>
|
||||
|
@ -321,4 +324,6 @@
|
|||
<string name="in_queue_label">Episode er i køen</string>
|
||||
<string name="new_episodes_count_label">Antal nye episoder</string>
|
||||
<string name="in_progress_episodes_count_label">Antallet af episoder du er begyndt at lytte til</string>
|
||||
<!--AntennaPodSP-->
|
||||
<string name="sp_apps_importing_feeds_msg">Importerer abonnementer fra single-purpose apps…</string>
|
||||
</resources>
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
<string name="download_error_unsupported_type">Nicht unterstützter Feed-Typ</string>
|
||||
<string name="download_error_connection_error">Verbindungsfehler</string>
|
||||
<string name="download_error_unknown_host">Unbekannter Host</string>
|
||||
<string name="download_error_unauthorized">Authentifizierungsfehler</string>
|
||||
<string name="cancel_all_downloads_label">Alle Downloads abbrechen</string>
|
||||
<string name="download_cancelled_msg">Download abgebrochen</string>
|
||||
<string name="download_report_title">Download abgeschlossen</string>
|
||||
|
@ -104,6 +105,8 @@
|
|||
<string name="download_type_media">Mediendatei</string>
|
||||
<string name="download_type_image">Bild</string>
|
||||
<string name="download_request_error_dialog_message_prefix">Beim Herunterladen der Datei ist ein Fehler aufgetreten:\u0020</string>
|
||||
<string name="authentication_notification_title">Authentifizierung erforderlich</string>
|
||||
<string name="authentication_notification_msg">Die angeforderte Quelle erfordert einen Benutzernamen und ein Passwort</string>
|
||||
<!--Mediaplayer messages-->
|
||||
<string name="player_error_msg">Fehler!</string>
|
||||
<string name="player_stopped_msg">Keine Medienwiedergabe</string>
|
||||
|
@ -321,4 +324,6 @@
|
|||
<string name="in_queue_label">Episode befindet sich inder Abspielliste</string>
|
||||
<string name="new_episodes_count_label">Anzahl neuer Episoden</string>
|
||||
<string name="in_progress_episodes_count_label">Anzahl der Episoden, die du angefangen hast zu hören</string>
|
||||
<!--AntennaPodSP-->
|
||||
<string name="sp_apps_importing_feeds_msg">Importiere Abonnements aus Single-Purpose Apps</string>
|
||||
</resources>
|
||||
|
|
|
@ -217,4 +217,5 @@
|
|||
<string name="set_to_default_folder">Elegir carpeta predeterminada</string>
|
||||
<!--Online feed view-->
|
||||
<!--Content descriptions for image buttons-->
|
||||
<!--AntennaPodSP-->
|
||||
</resources>
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
<string name="download_error_unsupported_type">Tipo de canal no admitido</string>
|
||||
<string name="download_error_connection_error">Error de conexión</string>
|
||||
<string name="download_error_unknown_host">Host desconocido</string>
|
||||
<string name="download_error_unauthorized">Error de autenticación</string>
|
||||
<string name="cancel_all_downloads_label">Cancelar todas las descargas</string>
|
||||
<string name="download_cancelled_msg">Descarga cancelada</string>
|
||||
<string name="download_report_title">Descargas completadas</string>
|
||||
|
@ -104,6 +105,8 @@
|
|||
<string name="download_type_media">Archivo de medios</string>
|
||||
<string name="download_type_image">Imagen</string>
|
||||
<string name="download_request_error_dialog_message_prefix">Ha ocurrido un error al intentar descargar el archivo:\u0020</string>
|
||||
<string name="authentication_notification_title">Autenticación requerida</string>
|
||||
<string name="authentication_notification_msg">El recurso solicitado requiere usuario y contraseña</string>
|
||||
<!--Mediaplayer messages-->
|
||||
<string name="player_error_msg">¡Error!</string>
|
||||
<string name="player_stopped_msg">No hay medios en reproducción</string>
|
||||
|
@ -321,4 +324,6 @@
|
|||
<string name="in_queue_label">El episodio está en la cola</string>
|
||||
<string name="new_episodes_count_label">Cantidad de episodios nuevos</string>
|
||||
<string name="in_progress_episodes_count_label">Cantidad de episodios que ha comenzado a escuchar</string>
|
||||
<!--AntennaPodSP-->
|
||||
<string name="sp_apps_importing_feeds_msg">Importando subscripciones de aplicaciones de uso específico...</string>
|
||||
</resources>
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
<string name="download_error_unsupported_type">Type de flux non géré</string>
|
||||
<string name="download_error_connection_error">Erreur de connexion</string>
|
||||
<string name="download_error_unknown_host">Hôte inconnu</string>
|
||||
<string name="download_error_unauthorized">Erreur d\'authentification</string>
|
||||
<string name="cancel_all_downloads_label">Annuler tous les téléchargements</string>
|
||||
<string name="download_cancelled_msg">Téléchargement annulé</string>
|
||||
<string name="download_report_title">Téléchargements terminés</string>
|
||||
|
@ -104,6 +105,8 @@
|
|||
<string name="download_type_media">Fichier média</string>
|
||||
<string name="download_type_image">Image</string>
|
||||
<string name="download_request_error_dialog_message_prefix">Une erreur s\'est produite durant le téléchargement du fichier :\u0020</string>
|
||||
<string name="authentication_notification_title">Authentification requise</string>
|
||||
<string name="authentication_notification_msg">La ressource que vous avez demandé nécessite un nom d\'utilisateur et un mot de passe</string>
|
||||
<!--Mediaplayer messages-->
|
||||
<string name="player_error_msg">Erreur !</string>
|
||||
<string name="player_stopped_msg">Pas de lecture en cours</string>
|
||||
|
@ -321,4 +324,6 @@
|
|||
<string name="in_queue_label">L\'épisode est dans la liste</string>
|
||||
<string name="new_episodes_count_label">Nombre de nouveaux épisodes</string>
|
||||
<string name="in_progress_episodes_count_label">Nombre d\'épisodes que vous avez commencé à écouter</string>
|
||||
<!--AntennaPodSP-->
|
||||
<string name="sp_apps_importing_feeds_msg">Importation des abonnements à partir d\'applications à usage unique...</string>
|
||||
</resources>
|
||||
|
|
|
@ -0,0 +1,329 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
<!--Activitiy titles-->
|
||||
<string name="app_name">אנטנה-פוד</string>
|
||||
<string name="feeds_label">הזנות</string>
|
||||
<string name="podcasts_label">פודקאסטים</string>
|
||||
<string name="episodes_label">פרקים</string>
|
||||
<string name="new_label">חדש</string>
|
||||
<string name="waiting_list_label">רשימת המתנה</string>
|
||||
<string name="settings_label">הגדרות</string>
|
||||
<string name="add_new_feed_label">הוסף פודקאסט</string>
|
||||
<string name="downloads_label">הורדות</string>
|
||||
<string name="cancel_download_label">בטל הורדה</string>
|
||||
<string name="download_log_label">יומן הורדות</string>
|
||||
<string name="playback_history_label">היסטוריית ניגון</string>
|
||||
<string name="gpodnet_main_label">gpodder.net</string>
|
||||
<string name="gpodnet_auth_label">התחברות אל gpodder.net</string>
|
||||
<!--Webview actions-->
|
||||
<string name="open_in_browser_label">פתח בדפדפן</string>
|
||||
<string name="copy_url_label">העתק כתובת אתר</string>
|
||||
<string name="share_url_label">שתף כתובת אתר</string>
|
||||
<string name="copied_url_msg">כתובת אתרהועתקה ללוח.</string>
|
||||
<!--Playback history-->
|
||||
<string name="clear_history_label">נקה היסטוריה</string>
|
||||
<!--Other-->
|
||||
<string name="confirm_label">אישור</string>
|
||||
<string name="cancel_label">בטל</string>
|
||||
<string name="author_label">מחבר</string>
|
||||
<string name="language_label">שפה</string>
|
||||
<string name="podcast_settings_label">הגדרות</string>
|
||||
<string name="cover_label">תמונה</string>
|
||||
<string name="error_label">שגיאה</string>
|
||||
<string name="error_msg_prefix">אירעה שגיאה:</string>
|
||||
<string name="refresh_label">רענן</string>
|
||||
<string name="external_storage_error_msg">אין אחסון חיצוני זמין. אנא ודא כי אחסון חיצוני הוא מותקן כך שהאפליקציה תוכל לעבוד כמו שצריך.</string>
|
||||
<string name="chapters_label">פרקים</string>
|
||||
<string name="shownotes_label">הערות פרק</string>
|
||||
<string name="description_label">תיאור</string>
|
||||
<string name="most_recent_prefix">הפרק האחרון:\u0020</string>
|
||||
<string name="episodes_suffix">\u0020פרקים</string>
|
||||
<string name="published_prefix">פורסם:\u0020</string>
|
||||
<string name="length_prefix">אורך:\u0020</string>
|
||||
<string name="size_prefix">גודל:\u0020</string>
|
||||
<string name="processing_label">מעבד</string>
|
||||
<string name="loading_label">טוען...</string>
|
||||
<string name="image_of_prefix">תמונה של:\u0020</string>
|
||||
<string name="save_username_password_label">שמור שם משתמש וססמה</string>
|
||||
<string name="close_label">סגור</string>
|
||||
<string name="retry_label">נסה שוב</string>
|
||||
<string name="auto_download_label">כלול בהורדות אוטומטיות</string>
|
||||
<!--'Add Feed' Activity labels-->
|
||||
<string name="feedurl_label">כתובת הזנה</string>
|
||||
<string name="txtvfeedurl_label">הוסף פודקאסט לפי כתובת אתר</string>
|
||||
<string name="podcastdirectories_label">מדריכי פודקאסט</string>
|
||||
<!--Actions on feeds-->
|
||||
<string name="mark_all_read_label">סמן הכל כנקרא</string>
|
||||
<string name="show_info_label">הצג מידע</string>
|
||||
<string name="remove_feed_label">הסר הזנה</string>
|
||||
<string name="share_link_label">שתף קישור אתר</string>
|
||||
<string name="share_source_label">שתף קישור הזנה</string>
|
||||
<string name="feed_delete_confirmation_msg">אשר מחיקת הזנה זו ואת כל פרקי ההזנה שהורדת.</string>
|
||||
<string name="feed_remover_msg">הסר הזנה</string>
|
||||
<!--actions on feeditems-->
|
||||
<string name="download_label">הורד</string>
|
||||
<string name="play_label">נגן</string>
|
||||
<string name="pause_label">השהה</string>
|
||||
<string name="stream_label">הזרם</string>
|
||||
<string name="remove_label">הסר</string>
|
||||
<string name="mark_read_label">סמן כנקרא</string>
|
||||
<string name="mark_unread_label">סמן כלא נקרא</string>
|
||||
<string name="add_to_queue_label">הוסף לתור</string>
|
||||
<string name="remove_from_queue_label">הסר מהתור</string>
|
||||
<string name="visit_website_label">בקר באתר</string>
|
||||
<string name="support_label">תרום באמצעות Flattr</string>
|
||||
<string name="enqueue_all_new">הכנס לתור הכל</string>
|
||||
<string name="download_all">הורד הכל</string>
|
||||
<string name="skip_episode_label">דלג על הפרק</string>
|
||||
<!--Download messages and labels-->
|
||||
<string name="download_successful">הורדה מוצלחת</string>
|
||||
<string name="download_failed">הורדה נכשלה</string>
|
||||
<string name="download_pending">הורדה עתידית</string>
|
||||
<string name="download_running">הורדה מתבצעת</string>
|
||||
<string name="download_error_device_not_found">התקן איחסון לא נמצא</string>
|
||||
<string name="download_error_insufficient_space">אין די שטח איחסון</string>
|
||||
<string name="download_error_file_error">שגיאת קובץ</string>
|
||||
<string name="download_error_http_data_error">שגיאת מידע HTTP</string>
|
||||
<string name="download_error_error_unknown">שגיאה לא ידועה</string>
|
||||
<string name="download_error_parser_exception">שגיאת תוכנית ניתוח</string>
|
||||
<string name="download_error_unsupported_type">סוג ההזנה אינו נתמך</string>
|
||||
<string name="download_error_connection_error">שגיאת חיבור</string>
|
||||
<string name="download_error_unknown_host">שרת לא ידוע</string>
|
||||
<string name="download_error_unauthorized">שגיאת אימות</string>
|
||||
<string name="cancel_all_downloads_label">בטל את כל ההורדות</string>
|
||||
<string name="download_cancelled_msg">הורדה בוטלה</string>
|
||||
<string name="download_report_title">הורדות הושלמו</string>
|
||||
<string name="download_error_malformed_url">כתובת אתר שגויה</string>
|
||||
<string name="download_error_io_error">שגיאת קלט פלט</string>
|
||||
<string name="download_error_request_error">שגיאת בקשה</string>
|
||||
<string name="download_error_db_access">שגיאת גישה למסד הנתונים</string>
|
||||
<string name="downloads_left">הורדות נותרוu0020\</string>
|
||||
<string name="download_notification_title">מוריד פודקאסט</string>
|
||||
<string name="download_report_content">%1$d הורדות הצליחו, %2$d ניכשלו</string>
|
||||
<string name="download_log_title_unknown">כותרת לא ידועה</string>
|
||||
<string name="download_type_feed">הזנה</string>
|
||||
<string name="download_type_media">קובץ מדיה</string>
|
||||
<string name="download_type_image">תמונה</string>
|
||||
<string name="download_request_error_dialog_message_prefix">שגיאה אירעה בעת הניסיון הורדת הקובץ:\u0020</string>
|
||||
<string name="authentication_notification_title">נידרש אימות</string>
|
||||
<string name="authentication_notification_msg">המשאב אותה ביקשת דורש שם משתמש וססמה</string>
|
||||
<!--Mediaplayer messages-->
|
||||
<string name="player_error_msg">שגיאה!</string>
|
||||
<string name="player_stopped_msg">מדיה לא מתנגנת</string>
|
||||
<string name="player_preparing_msg">מתכונן</string>
|
||||
<string name="player_ready_msg">מוכן</string>
|
||||
<string name="player_seeking_msg">מחפש</string>
|
||||
<string name="playback_error_server_died">שרת מת</string>
|
||||
<string name="playback_error_unknown">שגיאה לא ידועה</string>
|
||||
<string name="no_media_playing_label">מדיה לא מתנגנת</string>
|
||||
<string name="position_default_label">00:00:00</string>
|
||||
<string name="player_buffering_msg">ממלא חוצץ</string>
|
||||
<string name="playbackservice_notification_title">מנגן פודקאסט</string>
|
||||
<string name="playbackservice_notification_content">הקש כאן לעוד מידע</string>
|
||||
<!--Navigation-->
|
||||
<string name="show_download_log">הצג יומן</string>
|
||||
<string name="show_player_label">הצג נגן</string>
|
||||
<!--Queue operations-->
|
||||
<string name="clear_queue_label">נקה תור</string>
|
||||
<string name="organize_queue_label">סדר תור</string>
|
||||
<string name="undo">בטל</string>
|
||||
<string name="removed_from_queue">הסר פריט</string>
|
||||
<string name="move_to_top_label">העבר למעלה</string>
|
||||
<string name="move_to_bottom_label">העבר למטה</string>
|
||||
<!--Flattr-->
|
||||
<string name="flattr_auth_label">כניסה ל-Fattr</string>
|
||||
<string name="flattr_auth_explanation">לחץ על הכפתור למטה כדי להתחיל את תהליך האימות. אתה תועבר למסך כניסת flattr בדפדפן שלך ותתבקש לתת לאנטנה-פוד רשות לתרום באמצעות flattr. לאחר שקבלת אישור, תוכל לחזור למסך זה באופן אוטומטי.</string>
|
||||
<string name="authenticate_label">אימות</string>
|
||||
<string name="return_home_label">חזור למסך הבית</string>
|
||||
<string name="flattr_auth_success">האימות הצליח! עכשיו אתה יכול לתרום באמצעות flattr מתוך האפליקציה.</string>
|
||||
<string name="no_flattr_token_title">אסימון flattr לא נמצא</string>
|
||||
<string name="no_flattr_token_msg">חשבון ה-flattr שלך אינו מחובר לאנטנה-פוד. אתה יכול לקשראת לחשבונך לאנטנה-פוד לתרום באמצעות flattr מתוך האפליקציה או שאתה יכול לבקר באתר האינטרנט של הדבר לו תרצה לתרום.</string>
|
||||
<string name="authenticate_now_label">אמת</string>
|
||||
<string name="action_forbidden_title">הפעולה אסורה</string>
|
||||
<string name="action_forbidden_msg">לאנטנה-פוד אין הרשאה לפעולה זו. הסיבה לכך יכולה להיות שאסימון הגישה של אנטנה-פוד לחשבון שלך בוטל. אתה יכול לבצע אימות מחדש או לבקר באתר האינטרנט של הדבר במקום.</string>
|
||||
<string name="access_revoked_title">גישה בוטלה</string>
|
||||
<string name="access_revoked_info">אסימון הגישה של אנטנה-פוד לחשבונך בוטל. על מנת להשלים את התהליך, אתה צריך להסיר יישום זה מהרשימת היישומים שאושרו בהגדרות החשבונך באתר flattr.</string>
|
||||
<!--Flattr-->
|
||||
<string name="flattr_click_success">תרמת ב-Flattr!</string>
|
||||
<string name="flattr_click_success_count">תרמת ב-Flattr %d פעמים! </string>
|
||||
<string name="flattr_click_success_queue">תרומות Flattr: %s.</string>
|
||||
<string name="flattr_click_failure_count">כישלון לתרום ב-Flattr %d!</string>
|
||||
<string name="flattr_click_failure">לא נתרם ב-Flattr: %s.</string>
|
||||
<string name="flattr_click_enqueued">תרומות ב-Flattr מאוחר יותר</string>
|
||||
<string name="flattring_thing">תורם ב-Flattr %s</string>
|
||||
<string name="flattring_label">אנטנה-פוד תורם ב-Flattr</string>
|
||||
<string name="flattrd_label">אנטנה-פוד תרם ב-Flattr</string>
|
||||
<string name="flattrd_failed_label">כישלון תרומת אנטנה-פוד ב-Flattr</string>
|
||||
<string name="flattr_retrieving_status">איחזור תרומות Flattr</string>
|
||||
<!--Variable Speed-->
|
||||
<string name="download_plugin_label">הורד תוסף</string>
|
||||
<string name="no_playback_plugin_title">תוסף לא מותקן</string>
|
||||
<string name="no_playback_plugin_msg">לניגון במהירות משתנה תוסף מגורם שלישי צריך להיות מותקן. \n\nהקש על \'הורד תוסף\' להוריד תוסף חינמי מחנות Play\n\nבעיות בשימוש עם תוסף זה אינן באחריות אנטנה-פוד וצריך לדווחן ליוצר התוסף.</string>
|
||||
<string name="set_playback_speed_label">מהירויות ניגון</string>
|
||||
<!--Empty list labels-->
|
||||
<string name="no_items_label">אין פריטים ברשימה זו.</string>
|
||||
<string name="no_feeds_label">לא נרשמת עדיין להזנות.</string>
|
||||
<!--Preferences-->
|
||||
<string name="other_pref">אחר</string>
|
||||
<string name="about_pref">אודות</string>
|
||||
<string name="queue_label">תור</string>
|
||||
<string name="services_label">שירותים</string>
|
||||
<string name="flattr_label">Flattr</string>
|
||||
<string name="pref_pauseOnHeadsetDisconnect_sum">השהה השמעה בניתוק האוזניות </string>
|
||||
<string name="pref_followQueue_sum">עבור לפריט הבא בתור כאשר הניגון מסתיים</string>
|
||||
<string name="playback_pref">ניגון</string>
|
||||
<string name="network_pref">רשת</string>
|
||||
<string name="pref_autoUpdateIntervall_title">זמן בין עידכונים</string>
|
||||
<string name="pref_autoUpdateIntervall_sum">ציין פרק זמן שבו ההזנות עוברות רענון באופן אוטומטי או לבטל ריענון</string>
|
||||
<string name="pref_downloadMediaOnWifiOnly_sum">הורד קבצי מדיה רק דרך חיבור אינטרנט אלחוטי</string>
|
||||
<string name="pref_followQueue_title">ניגון מתמשך</string>
|
||||
<string name="pref_downloadMediaOnWifiOnly_title">הורדת מדיה דרך אינטרנט אלחוטי</string>
|
||||
<string name="pref_pauseOnHeadsetDisconnect_title">ניתוק אוזניות</string>
|
||||
<string name="pref_mobileUpdate_title">עידכון דרך רשת סלולרית</string>
|
||||
<string name="pref_mobileUpdate_sum">אפשר עידכונים דרך רשת סלולרית</string>
|
||||
<string name="refreshing_label">מרענן</string>
|
||||
<string name="flattr_settings_label">הגדרות Flattr</string>
|
||||
<string name="pref_flattr_auth_title">כניסה ל-Fattr</string>
|
||||
<string name="pref_flattr_auth_sum">היכנס לחשבון שלך לflattr לתרום ישירות מתוך האפליקציה.</string>
|
||||
<string name="pref_flattr_this_app_title">תרום באמצעות Flattr לאפליקציה זו</string>
|
||||
<string name="pref_flattr_this_app_sum">תמוך בפיתוח אנטנה-פוד בתרומה עם Flattr. תודה!</string>
|
||||
<string name="pref_revokeAccess_title">בטל גישה</string>
|
||||
<string name="pref_revokeAccess_sum">בטל הרשאת גישה לחשבון flattr ליישום זה.</string>
|
||||
<string name="pref_auto_flattr_title">תרומות Flattr אוטומטיות</string>
|
||||
<string name="pref_auto_flattr_sum">תרום לפרקים ש80% מתוכם נוגן </string>
|
||||
<string name="pref_display_only_episodes_title">הצג רק פרקים</string>
|
||||
<string name="pref_display_only_episodes_sum">הצג רק פריטים שלהם פרק.</string>
|
||||
<string name="user_interface_label">ממשק משתמש</string>
|
||||
<string name="pref_set_theme_title">בחר ערכת נושא</string>
|
||||
<string name="pref_set_theme_sum">שנה את מראה אנטנה-פוד</string>
|
||||
<string name="pref_automatic_download_title">הורדה אוטומטית</string>
|
||||
<string name="pref_automatic_download_sum">הגדר הורדה אטומטית של פרקים.</string>
|
||||
<string name="pref_autodl_wifi_filter_title">אפשר סינון אינטרנט אלחוטי</string>
|
||||
<string name="pref_autodl_wifi_filter_sum">אפשר הורדה אוטומטית דרך רשתות אלחוטייות נבחרות.</string>
|
||||
<string name="pref_episode_cache_title">מטמון פרקים</string>
|
||||
<string name="pref_theme_title_light">בהיר</string>
|
||||
<string name="pref_theme_title_dark">כהה</string>
|
||||
<string name="pref_episode_cache_unlimited">בלתי מוגבל</string>
|
||||
<string name="pref_update_interval_hours_plural">שעות</string>
|
||||
<string name="pref_update_interval_hours_singular">שעה</string>
|
||||
<string name="pref_update_interval_hours_manual">ידני</string>
|
||||
<string name="pref_gpodnet_authenticate_title">כניסה</string>
|
||||
<string name="pref_gpodnet_authenticate_sum">כנס עם חשבון gpodder.net שלך על מנת לסנכרן את ההרשמות שלך.</string>
|
||||
<string name="pref_gpodnet_logout_title">התנתקות</string>
|
||||
<string name="pref_gpodnet_logout_toast">ההתנתקות הייתה מוצלחת</string>
|
||||
<string name="pref_gpodnet_setlogin_information_title">שינוי פרטי התחברות</string>
|
||||
<string name="pref_gpodnet_setlogin_information_sum">שנה פרטי התחברות של חשבון gpodder.net.</string>
|
||||
<string name="pref_playback_speed_title">מהירויות ניגון</string>
|
||||
<string name="pref_playback_speed_sum">התאמת המהיריות הזמינות לניגון במהירות משתנה</string>
|
||||
<string name="pref_gpodnet_sethostname_title">הגדר שם שרת</string>
|
||||
<string name="pref_gpodnet_sethostname_use_default_host">השתמש בשרת ברירת מידל</string>
|
||||
<!--Search-->
|
||||
<string name="search_hint">חפש הזנות או פרקים</string>
|
||||
<string name="found_in_shownotes_label">נמצא בהערות פרק</string>
|
||||
<string name="found_in_chapters_label">נמצא בפרקים</string>
|
||||
<string name="search_status_searching">מחפש...</string>
|
||||
<string name="search_status_no_results">אין תוצאות</string>
|
||||
<string name="search_results_label">תוצאות חיפוש</string>
|
||||
<string name="search_term_label">חיפשת:\u0020</string>
|
||||
<string name="search_label">חיפוש</string>
|
||||
<string name="found_in_title_label">נמצא בכותרת</string>
|
||||
<!--OPML import and export-->
|
||||
<string name="opml_import_txtv_button_lable">קבצי OPML יאפשרו לכך לנייד פודקאסטים מלוכד פודקאסטים אחד למשנו.</string>
|
||||
<string name="opml_import_explanation">לייבא קובץ OPML, אתה צריך למקם אותו בספרייה הבאה וללחוץ על הכפתור למטה כדי להתחיל את תהליך היבוא.</string>
|
||||
<string name="start_import_label">התחל יבוא</string>
|
||||
<string name="opml_import_label">יבוא OPML</string>
|
||||
<string name="opml_directory_error">שגיאה!</string>
|
||||
<string name="reading_opml_label">קורא קובץ OPML</string>
|
||||
<string name="opml_reader_error">אירעה שגיאה בזמן קריאת קובץ OPML:</string>
|
||||
<string name="opml_import_error_dir_empty">ספריית היבוא ריקה.</string>
|
||||
<string name="select_all_label">בחר הכל</string>
|
||||
<string name="deselect_all_label">בטל בחירות</string>
|
||||
<string name="choose_file_to_import_label">בחר קובץ ליבוא</string>
|
||||
<string name="opml_export_label">יצוא OPML</string>
|
||||
<string name="exporting_label">מייצא...</string>
|
||||
<string name="export_error_label">שגיאת יצוא</string>
|
||||
<string name="opml_export_success_title">יצוא OPML הצליח.</string>
|
||||
<string name="opml_export_success_sum">קובץ OPML נכתב ל:\u0020</string>
|
||||
<!--Sleep timer-->
|
||||
<string name="set_sleeptimer_label">קבע טיימר שינה</string>
|
||||
<string name="disable_sleeptimer_label">בטל טיימר שינה</string>
|
||||
<string name="enter_time_here_label">קבע זמן</string>
|
||||
<string name="sleep_timer_label">טיימר שינה</string>
|
||||
<string name="time_left_label">זמן נותר:\u0020</string>
|
||||
<string name="time_dialog_invalid_input">קלט לא חוקי, זמן חייב להיות מספר שלם</string>
|
||||
<!--Miro Guide-->
|
||||
<string name="loading_categories_label">טוען קטגוריות...</string>
|
||||
<string name="browse_miroguide_label">עיין במדריך Miro</string>
|
||||
<string name="txtv_browse_miroguide_label">או עיין במדריך Miro:</string>
|
||||
<string name="miro_guide_label">מדריך Miro</string>
|
||||
<string name="miro_search_hint">חפש במדריך Miro</string>
|
||||
<string name="popular_label">פופולארי</string>
|
||||
<string name="best_rating_label">הדירוג הטוב ביותר</string>
|
||||
<string name="add_feed_label">הוסף פודקאסט</string>
|
||||
<string name="miro_feed_added">הזנה מוספת</string>
|
||||
<!--gpodder.net-->
|
||||
<string name="gpodnet_taglist_header">קטגוריות</string>
|
||||
<string name="gpodnet_toplist_header">פודקאסטים בכירים</string>
|
||||
<string name="gpodnet_suggestions_header">המלצות</string>
|
||||
<string name="gpodnet_search_hint">חפש ב-gpodder.net</string>
|
||||
<string name="gpodnetauth_login_title">התחברות</string>
|
||||
<string name="gpodnetauth_login_descr">ברוך הבא להתחברות ל-gpodder.net. ראשית, הקלד את פרטי הכניסה שלך:</string>
|
||||
<string name="gpodnetauth_login_butLabel">התחברות</string>
|
||||
<string name="gpodnetauth_login_register">אם אין לך עדיין חשבון, אתה יכול ליצור אחד כאן:\nhttps://gpodder.net/register/</string>
|
||||
<string name="username_label">שם משתמש:</string>
|
||||
<string name="password_label">ססמה:</string>
|
||||
<string name="gpodnetauth_device_title">בחירת מכשיר</string>
|
||||
<string name="gpodnetauth_device_descr">צור מכשיר חדש לשימוש עבור חשבון gpodder.net או לבחר אחד קיים:</string>
|
||||
<string name="gpodnetauth_device_deviceID">מזהה מכשיר:\u0020</string>
|
||||
<string name="gpodnetauth_device_caption">כותרת</string>
|
||||
<string name="gpodnetauth_device_butCreateNewDevice">צור מכשיר חדש</string>
|
||||
<string name="gpodnetauth_device_chooseExistingDevice">בחר מכשיר קיים:</string>
|
||||
<string name="gpodnetauth_device_errorEmpty">מזהה המכשיר אינו יכול להיות ריק</string>
|
||||
<string name="gpodnetauth_device_errorAlreadyUsed">מזהה המכשיר בשימוש</string>
|
||||
<string name="gpodnetauth_device_butChoose">בחר</string>
|
||||
<string name="gpodnetauth_finish_title">התחברות מוצלחת!</string>
|
||||
<string name="gpodnetauth_finish_descr">מזל טוב! חשבון gpodder.net שלך מקושר כעת עם המכשיר שלך. אנטנה-פוד מעתה יסנכרן באופן אוטומטי הרשמות במכשיר שלך עם חשבון gpodder.net שלך.</string>
|
||||
<string name="gpodnetauth_finish_butsyncnow">התחל סנכרון כעת</string>
|
||||
<string name="gpodnetauth_finish_butgomainscreen">עבור למסך הראשי</string>
|
||||
<string name="gpodnetsync_auth_error_title">שגיאת אימות של gpodder.net</string>
|
||||
<string name="gpodnetsync_auth_error_descr">שם משתמש או ססמה שגויים</string>
|
||||
<string name="gpodnetsync_error_title">שגיאת סנכרון של gpodder.net</string>
|
||||
<string name="gpodnetsync_error_descr">שגיאה במהל סינכרון:\u0020</string>
|
||||
<!--Directory chooser-->
|
||||
<string name="selected_folder_label">תיקיה נבחרת:</string>
|
||||
<string name="create_folder_label">צור תיקיה</string>
|
||||
<string name="choose_data_directory">בחר תיקיית מידע</string>
|
||||
<string name="create_folder_msg">צור תיקיה חדשה בשם \"%1$s\"?</string>
|
||||
<string name="create_folder_success">תיקיה חדשה נוצרה</string>
|
||||
<string name="create_folder_error_no_write_access">לא ניתן לכתוב לתיקה זו</string>
|
||||
<string name="create_folder_error_already_exists">תיקה כבר קיימת</string>
|
||||
<string name="create_folder_error">לא ניתן ליצור תיקיה</string>
|
||||
<string name="folder_not_empty_dialog_title">התיקיה אינה ריקה</string>
|
||||
<string name="folder_not_empty_dialog_msg">התיקייה שבחרת אינה ריקה. הורדות מדיה וקבצים אחרים יהיו ממוקמות ישירות בתיקייה זו. להמשיך בכל זאת?</string>
|
||||
<string name="set_to_default_folder">בחר תיקיית ברירת מחדל</string>
|
||||
<string name="pref_pausePlaybackForFocusLoss_sum">השהה ניגון במקום החלשת עוצמת שמע כשאפליקציה אחרת מנגנת</string>
|
||||
<string name="pref_pausePlaybackForFocusLoss_title">השהה בזמן הפרעה</string>
|
||||
<!--Online feed view-->
|
||||
<string name="subscribe_label">הרשם</string>
|
||||
<string name="subscribed_label">נרשם</string>
|
||||
<string name="downloading_label">מוריד...</string>
|
||||
<!--Content descriptions for image buttons-->
|
||||
<string name="show_chapters_label">הצג פרקים</string>
|
||||
<string name="show_shownotes_label">הצג הערות פרק</string>
|
||||
<string name="show_cover_label">הצג תמונה</string>
|
||||
<string name="rewind_label">הרץ לאחור</string>
|
||||
<string name="fast_forward_label">הרץ קדימה</string>
|
||||
<string name="media_type_audio_label">שמע</string>
|
||||
<string name="media_type_video_label">וידאו</string>
|
||||
<string name="navigate_upwards_label">נווט למעלה</string>
|
||||
<string name="butAction_label">עוד פעולות</string>
|
||||
<string name="status_playing_label">הפרק מתנגן</string>
|
||||
<string name="status_downloading_label">הפרק יורד</string>
|
||||
<string name="status_downloaded_label">הפרק ירד</string>
|
||||
<string name="status_unread_label">פריט חדש</string>
|
||||
<string name="in_queue_label">הפרק בתור</string>
|
||||
<string name="new_episodes_count_label">מספר הפרקים החדשים</string>
|
||||
<string name="in_progress_episodes_count_label">מספר הפרקים שהתחלת להאזין להם</string>
|
||||
<!--AntennaPodSP-->
|
||||
<string name="sp_apps_importing_feeds_msg">מייבא רישום מאפליקציות יעודיות...</string>
|
||||
</resources>
|
|
@ -291,4 +291,5 @@
|
|||
<string name="subscribed_label">सदस्यता ली गई</string>
|
||||
<string name="downloading_label">डाउनलोड कर रहा है ...</string>
|
||||
<!--Content descriptions for image buttons-->
|
||||
<!--AntennaPodSP-->
|
||||
</resources>
|
||||
|
|
|
@ -308,4 +308,5 @@
|
|||
<string name="status_unread_label">L\'oggetto è nuovo</string>
|
||||
<string name="in_queue_label">L\'episodio è in coda</string>
|
||||
<string name="new_episodes_count_label">Numero dei nuovi episodi</string>
|
||||
<!--AntennaPodSP-->
|
||||
</resources>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<string name="feeds_label">피드</string>
|
||||
<string name="podcasts_label">팟캐스트</string>
|
||||
<string name="episodes_label">에피소드</string>
|
||||
<string name="new_label">새로 만들기</string>
|
||||
<string name="new_label">신규</string>
|
||||
<string name="waiting_list_label">추가 대기 목록</string>
|
||||
<string name="settings_label">설정</string>
|
||||
<string name="add_new_feed_label">팟캐스트 추가</string>
|
||||
|
@ -89,6 +89,7 @@
|
|||
<string name="download_error_unsupported_type">지원하지 않는 피드 종류</string>
|
||||
<string name="download_error_connection_error">연결 오류</string>
|
||||
<string name="download_error_unknown_host">알 수 없는 호스트</string>
|
||||
<string name="download_error_unauthorized">인증 오류</string>
|
||||
<string name="cancel_all_downloads_label">모든 다운로드 취소</string>
|
||||
<string name="download_cancelled_msg">다운로드 취소됨</string>
|
||||
<string name="download_report_title">다운로드 마침</string>
|
||||
|
@ -104,6 +105,8 @@
|
|||
<string name="download_type_media">미디어 파일</string>
|
||||
<string name="download_type_image">그림</string>
|
||||
<string name="download_request_error_dialog_message_prefix">파일을 다운로드하는 중 오류가 발생했습니다:\u0020</string>
|
||||
<string name="authentication_notification_title">인증이 필요합니다</string>
|
||||
<string name="authentication_notification_msg">요청한 자원은 사용자 이름과 암호가 필요합니다</string>
|
||||
<!--Mediaplayer messages-->
|
||||
<string name="player_error_msg">오류!</string>
|
||||
<string name="player_stopped_msg">재생 중인 미디어 없음</string>
|
||||
|
@ -321,4 +324,6 @@
|
|||
<string name="in_queue_label">에피소드가 대기열에 들어 있습니다</string>
|
||||
<string name="new_episodes_count_label">새 에피소드 개수</string>
|
||||
<string name="in_progress_episodes_count_label">듣기를 시작한 에피소드 개수</string>
|
||||
<!--AntennaPodSP-->
|
||||
<string name="sp_apps_importing_feeds_msg">단일 용도 앱에서 구독 정보를 가져옵니다...</string>
|
||||
</resources>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<string name="app_name">AntennaPod</string>
|
||||
<string name="feeds_label">Feeds</string>
|
||||
<string name="podcasts_label">PODCASTS</string>
|
||||
<string name="episodes_label">EPISODES</string>
|
||||
<string name="episodes_label">AFLEVERINGEN</string>
|
||||
<string name="new_label">Nieuw</string>
|
||||
<string name="waiting_list_label">Wachtlijst</string>
|
||||
<string name="settings_label">Instellingen</string>
|
||||
|
@ -36,8 +36,8 @@
|
|||
<string name="chapters_label">Hoofdstukken</string>
|
||||
<string name="shownotes_label">Shownotes</string>
|
||||
<string name="description_label">Beschrijving</string>
|
||||
<string name="most_recent_prefix">Meest recent episode:\u0020</string>
|
||||
<string name="episodes_suffix">\u0020episodes</string>
|
||||
<string name="most_recent_prefix">Meest recente aflevering:\u0020</string>
|
||||
<string name="episodes_suffix">\u0020afleveringen</string>
|
||||
<string name="published_prefix">Gepubliceerd:\u0020</string>
|
||||
<string name="length_prefix">Lengte:\u0020</string>
|
||||
<string name="size_prefix">Grootte:\u0020</string>
|
||||
|
@ -58,7 +58,7 @@
|
|||
<string name="remove_feed_label">Feed verwijderen</string>
|
||||
<string name="share_link_label">Website link delen</string>
|
||||
<string name="share_source_label">Feed link delen</string>
|
||||
<string name="feed_delete_confirmation_msg">Bevestig dat u deze feed en ALLE episodes van deze feed die u hebt gedownload wilt verwijderen.</string>
|
||||
<string name="feed_delete_confirmation_msg">Bevestig dat u deze feed en ALLE afleveringen van deze feed die u hebt gedownload wilt verwijderen.</string>
|
||||
<string name="feed_remover_msg">Feed verwijderen</string>
|
||||
<!--actions on feeditems-->
|
||||
<string name="download_label">Download</string>
|
||||
|
@ -74,7 +74,7 @@
|
|||
<string name="support_label">Flattr dit</string>
|
||||
<string name="enqueue_all_new">Alle in wachtrij plaatsen</string>
|
||||
<string name="download_all">Alles downloaden</string>
|
||||
<string name="skip_episode_label">Episode overslaan</string>
|
||||
<string name="skip_episode_label">Aflevering overslaan</string>
|
||||
<!--Download messages and labels-->
|
||||
<string name="download_successful">Download succesvol</string>
|
||||
<string name="download_failed">Downloaden mislukt</string>
|
||||
|
@ -89,6 +89,7 @@
|
|||
<string name="download_error_unsupported_type">Niet ondersteunde feed soort</string>
|
||||
<string name="download_error_connection_error">Verbindingsfout</string>
|
||||
<string name="download_error_unknown_host">Onbekende host</string>
|
||||
<string name="download_error_unauthorized">Authenticatie fout</string>
|
||||
<string name="cancel_all_downloads_label">Alle downloads annuleren</string>
|
||||
<string name="download_cancelled_msg">Download geannuleerd</string>
|
||||
<string name="download_report_title">Downloads afgerond</string>
|
||||
|
@ -104,6 +105,8 @@
|
|||
<string name="download_type_media">Mediabestand</string>
|
||||
<string name="download_type_image">Beeld</string>
|
||||
<string name="download_request_error_dialog_message_prefix">Er is een fout opgetreden bij het downloaden van bestand:\u0020</string>
|
||||
<string name="authentication_notification_title">Authenticatie vereist</string>
|
||||
<string name="authentication_notification_msg">De opgevraagde bron vereist een gebruikersnaam en een wachtwoord</string>
|
||||
<!--Mediaplayer messages-->
|
||||
<string name="player_error_msg">Fout!</string>
|
||||
<string name="player_stopped_msg">Geen media aan het afspelen</string>
|
||||
|
@ -141,6 +144,17 @@
|
|||
<string name="access_revoked_title">Toegang ingetrokken</string>
|
||||
<string name="access_revoked_info">U heeft met succes het toegangstoken van AntennaPod tot uw account ingetrokken. Om het proces te voltooien, moet u deze app uit de lijst van goedgekeurde applicaties in uw accountinstellingen op de Flattr website verwijderen.</string>
|
||||
<!--Flattr-->
|
||||
<string name="flattr_click_success">Een ding geflattr\'d</string>
|
||||
<string name="flattr_click_success_count">%d dingen geflattr\'d!</string>
|
||||
<string name="flattr_click_success_queue">Geflattr\'d: %s.</string>
|
||||
<string name="flattr_click_failure_count">Kon %d dingen niet flattr\'n!</string>
|
||||
<string name="flattr_click_failure">Niet geflattr\'d: %s.</string>
|
||||
<string name="flattr_click_enqueued">Ding wordt later geflattr\'d</string>
|
||||
<string name="flattring_thing">%s aan het flattren</string>
|
||||
<string name="flattring_label">AntennaPod is aan het flattren</string>
|
||||
<string name="flattrd_label">AntennaPod heeft geflattr\'d</string>
|
||||
<string name="flattrd_failed_label">AntennaPod flattr niet gelukt</string>
|
||||
<string name="flattr_retrieving_status">Geflattr\'de dingen aan het ontvangen</string>
|
||||
<!--Variable Speed-->
|
||||
<string name="download_plugin_label">Plugin downloaden</string>
|
||||
<string name="no_playback_plugin_title">Plugin niet geinstalleerd</string>
|
||||
|
@ -175,16 +189,18 @@
|
|||
<string name="pref_flattr_this_app_sum">Ondersteun de ontwikkeling van AntennaPod door het te flattr\'en. Bedankt!</string>
|
||||
<string name="pref_revokeAccess_title">Toegang intrekken</string>
|
||||
<string name="pref_revokeAccess_sum">Trek de toegang van deze app in tot je Flattr account.</string>
|
||||
<string name="pref_display_only_episodes_title">Alleen episodes weergeven</string>
|
||||
<string name="pref_display_only_episodes_sum">Geef alleen items weer die ook een episode hebben.</string>
|
||||
<string name="pref_auto_flattr_title">Automatische Flattr</string>
|
||||
<string name="pref_auto_flattr_sum">Afleveringen automatisch Flattr nadat 80 procent van de episode gespeeld is</string>
|
||||
<string name="pref_display_only_episodes_title">Alleen afleveringen weergeven</string>
|
||||
<string name="pref_display_only_episodes_sum">Geef alleen items weer die ook een aflevering hebben.</string>
|
||||
<string name="user_interface_label">User Interface</string>
|
||||
<string name="pref_set_theme_title">Kies theme</string>
|
||||
<string name="pref_set_theme_sum">Verander het uiterlijk van AntennaPod.</string>
|
||||
<string name="pref_automatic_download_title">Automatisch downloaden</string>
|
||||
<string name="pref_automatic_download_sum">Configureer het automatisch downloaden van episoden.</string>
|
||||
<string name="pref_automatic_download_sum">Configureer het automatisch downloaden van afleveringen.</string>
|
||||
<string name="pref_autodl_wifi_filter_title">Wi-Fi filter inschakelen</string>
|
||||
<string name="pref_autodl_wifi_filter_sum">Automatisch downloaden alleen toestaan voor geselecteerde Wi-Fi-netwerken.</string>
|
||||
<string name="pref_episode_cache_title">Episode cache</string>
|
||||
<string name="pref_episode_cache_title">Afleveringen cache</string>
|
||||
<string name="pref_theme_title_light">Licht</string>
|
||||
<string name="pref_theme_title_dark">Donker</string>
|
||||
<string name="pref_episode_cache_unlimited">Onbeperkt</string>
|
||||
|
@ -202,7 +218,7 @@
|
|||
<string name="pref_gpodnet_sethostname_title">Definieer hostname</string>
|
||||
<string name="pref_gpodnet_sethostname_use_default_host">Gebruik standaard host</string>
|
||||
<!--Search-->
|
||||
<string name="search_hint">Feeds of episodes zoeken</string>
|
||||
<string name="search_hint">Feeds of afleveringen zoeken</string>
|
||||
<string name="found_in_shownotes_label">Gevonden in de shownotes</string>
|
||||
<string name="found_in_chapters_label">Gevonden in hoofdstukken</string>
|
||||
<string name="search_status_searching">Aan het zoeken...</string>
|
||||
|
@ -292,7 +308,22 @@
|
|||
<string name="subscribed_label">Geabonneerd</string>
|
||||
<string name="downloading_label">Aan het downloaden</string>
|
||||
<!--Content descriptions for image buttons-->
|
||||
<string name="show_chapters_label">Hoofdstukken tonen</string>
|
||||
<string name="show_shownotes_label">Shownotes tonen</string>
|
||||
<string name="show_cover_label">Beeld tonen</string>
|
||||
<string name="rewind_label">Terugspoelen</string>
|
||||
<string name="fast_forward_label">Vooruitspoelen</string>
|
||||
<string name="media_type_audio_label">Audio</string>
|
||||
<string name="media_type_video_label">Video</string>
|
||||
<string name="navigate_upwards_label">Navigeer naar boven</string>
|
||||
<string name="butAction_label">Meer acties</string>
|
||||
<string name="status_playing_label">Aflevering wordt gespeeld</string>
|
||||
<string name="status_downloading_label">Aflevering wordt gedownload</string>
|
||||
<string name="status_downloaded_label">Aflevering is gedownload</string>
|
||||
<string name="status_unread_label">Item is nieuw</string>
|
||||
<string name="in_queue_label">Aflevering is in de queue</string>
|
||||
<string name="new_episodes_count_label">Aantal nieuwe afleveringen</string>
|
||||
<string name="in_progress_episodes_count_label">Aantal afleveringen dat begonnen te luisteren zijn</string>
|
||||
<!--AntennaPodSP-->
|
||||
<string name="sp_apps_importing_feeds_msg">Abonnementen aan het importeren vanuit single-purpose apps...</string>
|
||||
</resources>
|
||||
|
|
|
@ -304,4 +304,5 @@
|
|||
<string name="in_queue_label">Odcinek jest w kolejce</string>
|
||||
<string name="new_episodes_count_label">Liczba nowych odcinków</string>
|
||||
<string name="in_progress_episodes_count_label">Liczba odcinków, których zacząłeś słuchać</string>
|
||||
<!--AntennaPodSP-->
|
||||
</resources>
|
||||
|
|
|
@ -299,4 +299,5 @@
|
|||
<string name="status_unread_label">Item é novo</string>
|
||||
<string name="in_queue_label">Episódio está na fila</string>
|
||||
<string name="new_episodes_count_label">Numero de novos episódios</string>
|
||||
<!--AntennaPodSP-->
|
||||
</resources>
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
<string name="download_error_unsupported_type">Fonte não suportada</string>
|
||||
<string name="download_error_connection_error">Erro de ligação</string>
|
||||
<string name="download_error_unknown_host">Servidor desconhecido</string>
|
||||
<string name="download_error_unauthorized">Erro de autenticação</string>
|
||||
<string name="cancel_all_downloads_label">Cancelar transferências</string>
|
||||
<string name="download_cancelled_msg">Transferência cancelada</string>
|
||||
<string name="download_report_title">Transferências terminadas</string>
|
||||
|
@ -104,6 +105,8 @@
|
|||
<string name="download_type_media">Ficheiro multimédia</string>
|
||||
<string name="download_type_image">Imagem</string>
|
||||
<string name="download_request_error_dialog_message_prefix">Ocorreu um erro ao transferir o ficheiro:\u0020</string>
|
||||
<string name="authentication_notification_title">Requer autenticação</string>
|
||||
<string name="authentication_notification_msg">O recurso solicitado requer um utilizador e uma senha</string>
|
||||
<!--Mediaplayer messages-->
|
||||
<string name="player_error_msg">Erro!</string>
|
||||
<string name="player_stopped_msg">Nada em reprodução</string>
|
||||
|
@ -321,4 +324,5 @@
|
|||
<string name="in_queue_label">Episódio está na fila</string>
|
||||
<string name="new_episodes_count_label">Número de novos episódios</string>
|
||||
<string name="in_progress_episodes_count_label">Número de episódios que já foi iniciada a reprodução</string>
|
||||
<!--AntennaPodSP-->
|
||||
</resources>
|
||||
|
|
|
@ -262,4 +262,5 @@
|
|||
<string name="subscribed_label">Abonat</string>
|
||||
<string name="downloading_label">Se descarcă...</string>
|
||||
<!--Content descriptions for image buttons-->
|
||||
<!--AntennaPodSP-->
|
||||
</resources>
|
||||
|
|
|
@ -311,4 +311,5 @@
|
|||
<string name="in_queue_label">Эпизод в очереди</string>
|
||||
<string name="new_episodes_count_label">Количество новых эпизодов</string>
|
||||
<string name="in_progress_episodes_count_label">Количество начатых эпизодов</string>
|
||||
<!--AntennaPodSP-->
|
||||
</resources>
|
||||
|
|
|
@ -72,7 +72,7 @@
|
|||
<string name="remove_from_queue_label">Ta bort från Kön</string>
|
||||
<string name="visit_website_label">Besök websidan</string>
|
||||
<string name="support_label">Flattr det här</string>
|
||||
<string name="enqueue_all_new">Ställ alla i kö</string>
|
||||
<string name="enqueue_all_new">Lägg till alla i kön</string>
|
||||
<string name="download_all">Ladda ner alla</string>
|
||||
<string name="skip_episode_label">Hoppa över avsnitt</string>
|
||||
<!--Download messages and labels-->
|
||||
|
@ -89,6 +89,7 @@
|
|||
<string name="download_error_unsupported_type">Flödestyp utan stöd</string>
|
||||
<string name="download_error_connection_error">Anslutningsfel</string>
|
||||
<string name="download_error_unknown_host">Okänd värd</string>
|
||||
<string name="download_error_unauthorized">Autentiseringsproblem</string>
|
||||
<string name="cancel_all_downloads_label">Avbryt alla nedladdningar</string>
|
||||
<string name="download_cancelled_msg">Nedladdning avbruten</string>
|
||||
<string name="download_report_title">Nedladdningar färdiga</string>
|
||||
|
@ -104,6 +105,8 @@
|
|||
<string name="download_type_media">Mediafil</string>
|
||||
<string name="download_type_image">Bild</string>
|
||||
<string name="download_request_error_dialog_message_prefix">Ett fel uppstod vid försöket att ladda ner filen:\u0020</string>
|
||||
<string name="authentication_notification_title">Autentisering krävs</string>
|
||||
<string name="authentication_notification_msg">Resursen du begärde kräver ett användarnamn och ett lösenord</string>
|
||||
<!--Mediaplayer messages-->
|
||||
<string name="player_error_msg">Fel! </string>
|
||||
<string name="player_stopped_msg">Inget media spelar</string>
|
||||
|
@ -122,7 +125,7 @@
|
|||
<string name="show_player_label">Visa spelare</string>
|
||||
<!--Queue operations-->
|
||||
<string name="clear_queue_label">Rensa kön</string>
|
||||
<string name="organize_queue_label">Organisera kö</string>
|
||||
<string name="organize_queue_label">Organisera kön</string>
|
||||
<string name="undo">Ångra</string>
|
||||
<string name="removed_from_queue">Föremålet avlägsnades</string>
|
||||
<string name="move_to_top_label">Flytta längst upp</string>
|
||||
|
@ -321,4 +324,6 @@
|
|||
<string name="in_queue_label">Episoden är i kön</string>
|
||||
<string name="new_episodes_count_label">Antal nya episoder</string>
|
||||
<string name="in_progress_episodes_count_label">Antal episoder du har börjat lyssna på</string>
|
||||
<!--AntennaPodSP-->
|
||||
<string name="sp_apps_importing_feeds_msg">Importerar prenumerationer från appar gjorda för ett enda syfte...</string>
|
||||
</resources>
|
||||
|
|
|
@ -89,6 +89,7 @@
|
|||
<string name="download_error_unsupported_type">Непідтримую такий канал</string>
|
||||
<string name="download_error_connection_error">Помилка з\'єднання</string>
|
||||
<string name="download_error_unknown_host">Невідомий host</string>
|
||||
<string name="download_error_unauthorized">Помилка автентифікації</string>
|
||||
<string name="cancel_all_downloads_label">Скасувати всі завантаження</string>
|
||||
<string name="download_cancelled_msg">Відмінено завантаження</string>
|
||||
<string name="download_report_title">Завантажили</string>
|
||||
|
@ -104,6 +105,8 @@
|
|||
<string name="download_type_media">Файл з медіа</string>
|
||||
<string name="download_type_image">Зображення</string>
|
||||
<string name="download_request_error_dialog_message_prefix">Помилка при завантажені файлу:\u0020</string>
|
||||
<string name="authentication_notification_title">Потрібна автентифікація</string>
|
||||
<string name="authentication_notification_msg">Для доступа до цього ресурса потрібні ім\'я та пароль </string>
|
||||
<!--Mediaplayer messages-->
|
||||
<string name="player_error_msg">Помилка!</string>
|
||||
<string name="player_stopped_msg"> Нічого грати</string>
|
||||
|
@ -321,4 +324,6 @@
|
|||
<string name="in_queue_label">Епізод чекає в черзі</string>
|
||||
<string name="new_episodes_count_label">Кількість нових епізодів</string>
|
||||
<string name="in_progress_episodes_count_label">Кількість епізодів що ви почали слухати</string>
|
||||
<!--AntennaPodSP-->
|
||||
<string name="sp_apps_importing_feeds_msg">Імпорт подкастів з інших програм...</string>
|
||||
</resources>
|
||||
|
|
|
@ -308,4 +308,5 @@
|
|||
<string name="in_queue_label">曲目已经在播放列表中</string>
|
||||
<string name="new_episodes_count_label">新曲目数</string>
|
||||
<string name="in_progress_episodes_count_label">已收听曲目数</string>
|
||||
<!--AntennaPodSP-->
|
||||
</resources>
|
||||
|
|
|
@ -100,6 +100,7 @@
|
|||
<string name="download_error_unsupported_type">Unsupported Feed type</string>
|
||||
<string name="download_error_connection_error">Connection error</string>
|
||||
<string name="download_error_unknown_host">Unknown host</string>
|
||||
<string name="download_error_unauthorized">Authentication error</string>
|
||||
<string name="cancel_all_downloads_label">Cancel all downloads</string>
|
||||
<string name="download_cancelled_msg">Download cancelled</string>
|
||||
<string name="download_report_title">Downloads completed</string>
|
||||
|
@ -115,6 +116,8 @@
|
|||
<string name="download_type_media">Media file</string>
|
||||
<string name="download_type_image">Image</string>
|
||||
<string name="download_request_error_dialog_message_prefix">An error occurred when trying to download the file:\u0020</string>
|
||||
<string name="authentication_notification_title">Authentication required</string>
|
||||
<string name="authentication_notification_msg">The resource you requested requires a username and a password</string>
|
||||
|
||||
<!-- Mediaplayer messages -->
|
||||
<string name="player_error_msg">Error!</string>
|
||||
|
@ -350,4 +353,8 @@
|
|||
<string name="in_queue_label">Episode is in the queue</string>
|
||||
<string name="new_episodes_count_label">Number of new episodes</string>
|
||||
<string name="in_progress_episodes_count_label">Number of episodes you have started listening to</string>
|
||||
|
||||
<!-- AntennaPodSP -->
|
||||
|
||||
<string name="sp_apps_importing_feeds_msg">Importing subscriptions from single-purpose apps…</string>
|
||||
</resources>
|
||||
|
|
|
@ -0,0 +1,470 @@
|
|||
// Copyright 2011, Aocate, Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package com.aocate.media;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import android.content.Context;
|
||||
import android.media.MediaPlayer;
|
||||
import android.net.Uri;
|
||||
import android.util.Log;
|
||||
|
||||
public class AndroidMediaPlayer extends MediaPlayerImpl {
|
||||
private final static String AMP_TAG = "AocateAndroidMediaPlayer";
|
||||
|
||||
// private static final long TIMEOUT_DURATION_MS = 500;
|
||||
|
||||
android.media.MediaPlayer mp = null;
|
||||
|
||||
private android.media.MediaPlayer.OnBufferingUpdateListener onBufferingUpdateListener = new android.media.MediaPlayer.OnBufferingUpdateListener() {
|
||||
public void onBufferingUpdate(android.media.MediaPlayer mp, int percent) {
|
||||
if (owningMediaPlayer != null) {
|
||||
owningMediaPlayer.lock.lock();
|
||||
try {
|
||||
if ((owningMediaPlayer.onBufferingUpdateListener != null)
|
||||
&& (owningMediaPlayer.mpi == AndroidMediaPlayer.this)) {
|
||||
owningMediaPlayer.onBufferingUpdateListener.onBufferingUpdate(owningMediaPlayer, percent);
|
||||
}
|
||||
}
|
||||
finally {
|
||||
owningMediaPlayer.lock.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
private android.media.MediaPlayer.OnCompletionListener onCompletionListener = new android.media.MediaPlayer.OnCompletionListener() {
|
||||
public void onCompletion(android.media.MediaPlayer mp) {
|
||||
Log.d(AMP_TAG, "onCompletionListener being called");
|
||||
if (owningMediaPlayer != null) {
|
||||
owningMediaPlayer.lock.lock();
|
||||
try {
|
||||
if (owningMediaPlayer.onCompletionListener != null) {
|
||||
owningMediaPlayer.onCompletionListener.onCompletion(owningMediaPlayer);
|
||||
}
|
||||
}
|
||||
finally {
|
||||
owningMediaPlayer.lock.unlock();
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private android.media.MediaPlayer.OnErrorListener onErrorListener = new android.media.MediaPlayer.OnErrorListener() {
|
||||
public boolean onError(android.media.MediaPlayer mp, int what, int extra) {
|
||||
// Once we're in errored state, any received messages are going to be junked
|
||||
if (owningMediaPlayer != null) {
|
||||
owningMediaPlayer.lock.lock();
|
||||
try {
|
||||
if (owningMediaPlayer.onErrorListener != null) {
|
||||
return owningMediaPlayer.onErrorListener.onError(owningMediaPlayer, what, extra);
|
||||
}
|
||||
}
|
||||
finally {
|
||||
owningMediaPlayer.lock.unlock();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
private android.media.MediaPlayer.OnInfoListener onInfoListener = new android.media.MediaPlayer.OnInfoListener() {
|
||||
public boolean onInfo(android.media.MediaPlayer mp, int what, int extra) {
|
||||
if (owningMediaPlayer != null) {
|
||||
owningMediaPlayer.lock.lock();
|
||||
try {
|
||||
if ((owningMediaPlayer.onInfoListener != null)
|
||||
&& (owningMediaPlayer.mpi == AndroidMediaPlayer.this)) {
|
||||
return owningMediaPlayer.onInfoListener.onInfo(owningMediaPlayer, what, extra);
|
||||
}
|
||||
}
|
||||
finally {
|
||||
owningMediaPlayer.lock.unlock();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
// We have to assign this.onPreparedListener because the
|
||||
// onPreparedListener in owningMediaPlayer sets the state
|
||||
// to PREPARED. Due to prepareAsync, that's the only
|
||||
// reasonable place to do it
|
||||
// The others it just didn't make sense to have a setOnXListener that didn't use the parameter
|
||||
private android.media.MediaPlayer.OnPreparedListener onPreparedListener = new android.media.MediaPlayer.OnPreparedListener() {
|
||||
public void onPrepared(android.media.MediaPlayer mp) {
|
||||
Log.d(AMP_TAG, "Calling onPreparedListener.onPrepared()");
|
||||
if (AndroidMediaPlayer.this.owningMediaPlayer != null) {
|
||||
AndroidMediaPlayer.this.lockMuteOnPreparedCount.lock();
|
||||
try {
|
||||
if (AndroidMediaPlayer.this.muteOnPreparedCount > 0) {
|
||||
AndroidMediaPlayer.this.muteOnPreparedCount--;
|
||||
}
|
||||
else {
|
||||
AndroidMediaPlayer.this.muteOnPreparedCount = 0;
|
||||
if (AndroidMediaPlayer.this.owningMediaPlayer.onPreparedListener != null) {
|
||||
Log.d(AMP_TAG, "Invoking AndroidMediaPlayer.this.owningMediaPlayer.onPreparedListener.onPrepared");
|
||||
AndroidMediaPlayer.this.owningMediaPlayer.onPreparedListener.onPrepared(AndroidMediaPlayer.this.owningMediaPlayer);
|
||||
}
|
||||
}
|
||||
}
|
||||
finally {
|
||||
AndroidMediaPlayer.this.lockMuteOnPreparedCount.unlock();
|
||||
}
|
||||
if (owningMediaPlayer.mpi != AndroidMediaPlayer.this) {
|
||||
Log.d(AMP_TAG, "owningMediaPlayer has changed implementation");
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private android.media.MediaPlayer.OnSeekCompleteListener onSeekCompleteListener = new android.media.MediaPlayer.OnSeekCompleteListener() {
|
||||
public void onSeekComplete(android.media.MediaPlayer mp) {
|
||||
if (owningMediaPlayer != null) {
|
||||
owningMediaPlayer.lock.lock();
|
||||
try {
|
||||
lockMuteOnSeekCount.lock();
|
||||
try {
|
||||
if (AndroidMediaPlayer.this.muteOnSeekCount > 0) {
|
||||
AndroidMediaPlayer.this.muteOnSeekCount--;
|
||||
}
|
||||
else {
|
||||
AndroidMediaPlayer.this.muteOnSeekCount = 0;
|
||||
if (AndroidMediaPlayer.this.owningMediaPlayer.onSeekCompleteListener != null) {
|
||||
owningMediaPlayer.onSeekCompleteListener.onSeekComplete(owningMediaPlayer);
|
||||
}
|
||||
}
|
||||
}
|
||||
finally {
|
||||
lockMuteOnSeekCount.unlock();
|
||||
}
|
||||
}
|
||||
finally {
|
||||
owningMediaPlayer.lock.unlock();
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
public AndroidMediaPlayer(com.aocate.media.MediaPlayer owningMediaPlayer, Context context) {
|
||||
super(owningMediaPlayer, context);
|
||||
|
||||
mp = new MediaPlayer();
|
||||
|
||||
// final ReentrantLock lock = new ReentrantLock();
|
||||
// Handler handler = new Handler(Looper.getMainLooper()) {
|
||||
// @Override
|
||||
// public void handleMessage(Message msg) {
|
||||
// Log.d(AMP_TAG, "Instantiating new AndroidMediaPlayer from Handler");
|
||||
// lock.lock();
|
||||
// if (mp == null) {
|
||||
// mp = new MediaPlayer();
|
||||
// }
|
||||
// lock.unlock();
|
||||
// }
|
||||
// };
|
||||
//
|
||||
// long endTime = System.currentTimeMillis() + TIMEOUT_DURATION_MS;
|
||||
//
|
||||
// while (true) {
|
||||
// // Retry messages until mp isn't null or it's time to give up
|
||||
// handler.sendMessage(handler.obtainMessage());
|
||||
// if ((mp != null)
|
||||
// || (endTime < System.currentTimeMillis())) {
|
||||
// break;
|
||||
// }
|
||||
// try {
|
||||
// Thread.sleep(50);
|
||||
// } catch (InterruptedException e) {
|
||||
// // TODO Auto-generated catch block
|
||||
// e.printStackTrace();
|
||||
// }
|
||||
// }
|
||||
|
||||
if (mp == null) {
|
||||
throw new IllegalStateException("Did not instantiate android.media.MediaPlayer successfully");
|
||||
}
|
||||
|
||||
mp.setOnBufferingUpdateListener(this.onBufferingUpdateListener);
|
||||
mp.setOnCompletionListener(this.onCompletionListener);
|
||||
mp.setOnErrorListener(this.onErrorListener);
|
||||
mp.setOnInfoListener(this.onInfoListener);
|
||||
Log.d(AMP_TAG, " ++++++++++++++++++++++++++++++++ Setting prepared listener to this.onPreparedListener");
|
||||
mp.setOnPreparedListener(this.onPreparedListener);
|
||||
mp.setOnSeekCompleteListener(this.onSeekCompleteListener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canSetPitch() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canSetSpeed() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getCurrentPitchStepsAdjustment() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCurrentPosition() {
|
||||
owningMediaPlayer.lock.lock();
|
||||
try {
|
||||
return mp.getCurrentPosition();
|
||||
}
|
||||
finally {
|
||||
owningMediaPlayer.lock.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getCurrentSpeedMultiplier() {
|
||||
return 1f;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDuration() {
|
||||
owningMediaPlayer.lock.lock();
|
||||
try {
|
||||
return mp.getDuration();
|
||||
}
|
||||
finally {
|
||||
owningMediaPlayer.lock.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getMaxSpeedMultiplier() {
|
||||
return 1f;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getMinSpeedMultiplier() {
|
||||
return 1f;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isLooping() {
|
||||
owningMediaPlayer.lock.lock();
|
||||
try {
|
||||
return mp.isLooping();
|
||||
}
|
||||
finally {
|
||||
owningMediaPlayer.lock.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPlaying() {
|
||||
owningMediaPlayer.lock.lock();
|
||||
try {
|
||||
return mp.isPlaying();
|
||||
}
|
||||
finally {
|
||||
owningMediaPlayer.lock.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void pause() {
|
||||
owningMediaPlayer.lock.lock();
|
||||
try {
|
||||
mp.pause();
|
||||
}
|
||||
finally {
|
||||
owningMediaPlayer.lock.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void prepare() throws IllegalStateException, IOException {
|
||||
owningMediaPlayer.lock.lock();
|
||||
Log.d(AMP_TAG, "prepare()");
|
||||
try {
|
||||
mp.prepare();
|
||||
Log.d(AMP_TAG, "Finish prepare()");
|
||||
}
|
||||
finally {
|
||||
owningMediaPlayer.lock.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void prepareAsync() {
|
||||
mp.prepareAsync();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void release() {
|
||||
owningMediaPlayer.lock.lock();
|
||||
try {
|
||||
if (mp != null) {
|
||||
Log.d(AMP_TAG, "mp.release()");
|
||||
mp.release();
|
||||
}
|
||||
}
|
||||
finally {
|
||||
owningMediaPlayer.lock.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reset() {
|
||||
owningMediaPlayer.lock.lock();
|
||||
try {
|
||||
mp.reset();
|
||||
}
|
||||
finally {
|
||||
owningMediaPlayer.lock.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void seekTo(int msec) throws IllegalStateException {
|
||||
owningMediaPlayer.lock.lock();
|
||||
try {
|
||||
mp.setOnSeekCompleteListener(this.onSeekCompleteListener);
|
||||
mp.seekTo(msec);
|
||||
}
|
||||
finally {
|
||||
owningMediaPlayer.lock.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAudioStreamType(int streamtype) {
|
||||
owningMediaPlayer.lock.lock();
|
||||
try {
|
||||
mp.setAudioStreamType(streamtype);
|
||||
}
|
||||
finally {
|
||||
owningMediaPlayer.lock.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDataSource(Context context, Uri uri)
|
||||
throws IllegalArgumentException, IllegalStateException, IOException {
|
||||
owningMediaPlayer.lock.lock();
|
||||
try {
|
||||
Log.d(AMP_TAG, "setDataSource(context, " + uri.toString() + ")");
|
||||
mp.setDataSource(context, uri);
|
||||
}
|
||||
finally {
|
||||
owningMediaPlayer.lock.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDataSource(String path) throws IllegalArgumentException,
|
||||
IllegalStateException, IOException {
|
||||
owningMediaPlayer.lock.lock();
|
||||
try {
|
||||
Log.d(AMP_TAG, "setDataSource(" + path + ")");
|
||||
mp.setDataSource(path);
|
||||
}
|
||||
finally {
|
||||
owningMediaPlayer.lock.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setEnableSpeedAdjustment(boolean enableSpeedAdjustment) {
|
||||
// Can't!
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLooping(boolean loop) {
|
||||
owningMediaPlayer.lock.lock();
|
||||
try {
|
||||
mp.setLooping(loop);
|
||||
}
|
||||
finally {
|
||||
owningMediaPlayer.lock.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPitchStepsAdjustment(float pitchSteps) {
|
||||
// Can't!
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPlaybackPitch(float f) {
|
||||
// Can't!
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPlaybackSpeed(float f) {
|
||||
// Can't!
|
||||
Log.d(AMP_TAG, "setPlaybackSpeed(" + f + ")");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSpeedAdjustmentAlgorithm(int algorithm) {
|
||||
// Can't!
|
||||
Log.d(AMP_TAG, "setSpeedAdjustmentAlgorithm(" + algorithm + ")");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setVolume(float leftVolume, float rightVolume) {
|
||||
owningMediaPlayer.lock.lock();
|
||||
try {
|
||||
mp.setVolume(leftVolume, rightVolume);
|
||||
}
|
||||
finally {
|
||||
owningMediaPlayer.lock.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setWakeMode(Context context, int mode) {
|
||||
owningMediaPlayer.lock.lock();
|
||||
try {
|
||||
if (mode != 0) {
|
||||
mp.setWakeMode(context, mode);
|
||||
}
|
||||
}
|
||||
finally {
|
||||
owningMediaPlayer.lock.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void start() {
|
||||
owningMediaPlayer.lock.lock();
|
||||
try {
|
||||
mp.start();
|
||||
}
|
||||
finally {
|
||||
owningMediaPlayer.lock.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stop() {
|
||||
owningMediaPlayer.lock.lock();
|
||||
try {
|
||||
mp.stop();
|
||||
}
|
||||
finally {
|
||||
owningMediaPlayer.lock.unlock();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,118 @@
|
|||
// Copyright 2011, Aocate, Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package com.aocate.media;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.concurrent.locks.ReentrantLock;
|
||||
|
||||
import android.content.Context;
|
||||
import android.net.Uri;
|
||||
import android.util.Log;
|
||||
|
||||
public abstract class MediaPlayerImpl {
|
||||
private static final String MPI_TAG = "AocateMediaPlayerImpl";
|
||||
protected final MediaPlayer owningMediaPlayer;
|
||||
protected final Context mContext;
|
||||
protected int muteOnPreparedCount = 0;
|
||||
protected int muteOnSeekCount = 0;
|
||||
|
||||
public MediaPlayerImpl(MediaPlayer owningMediaPlayer, Context context) {
|
||||
this.owningMediaPlayer = owningMediaPlayer;
|
||||
|
||||
this.mContext = context;
|
||||
}
|
||||
|
||||
public abstract boolean canSetPitch();
|
||||
|
||||
public abstract boolean canSetSpeed();
|
||||
|
||||
public abstract float getCurrentPitchStepsAdjustment();
|
||||
|
||||
public abstract int getCurrentPosition();
|
||||
|
||||
public abstract float getCurrentSpeedMultiplier();
|
||||
|
||||
public abstract int getDuration();
|
||||
|
||||
public abstract float getMaxSpeedMultiplier();
|
||||
|
||||
public abstract float getMinSpeedMultiplier();
|
||||
|
||||
public abstract boolean isLooping();
|
||||
|
||||
public abstract boolean isPlaying();
|
||||
|
||||
public abstract void pause();
|
||||
|
||||
public abstract void prepare() throws IllegalStateException, IOException;
|
||||
|
||||
public abstract void prepareAsync();
|
||||
|
||||
public abstract void release();
|
||||
|
||||
public abstract void reset();
|
||||
|
||||
public abstract void seekTo(int msec) throws IllegalStateException;
|
||||
|
||||
public abstract void setAudioStreamType(int streamtype);
|
||||
|
||||
public abstract void setDataSource(Context context, Uri uri) throws IllegalArgumentException, IllegalStateException, IOException;
|
||||
|
||||
public abstract void setDataSource(String path) throws IllegalArgumentException, IllegalStateException, IOException;
|
||||
|
||||
public abstract void setEnableSpeedAdjustment(boolean enableSpeedAdjustment);
|
||||
|
||||
public abstract void setLooping(boolean loop);
|
||||
|
||||
public abstract void setPitchStepsAdjustment(float pitchSteps);
|
||||
|
||||
public abstract void setPlaybackPitch(float f);
|
||||
|
||||
public abstract void setPlaybackSpeed(float f);
|
||||
|
||||
public abstract void setSpeedAdjustmentAlgorithm(int algorithm);
|
||||
|
||||
public abstract void setVolume(float leftVolume, float rightVolume);
|
||||
|
||||
public abstract void setWakeMode(Context context, int mode);
|
||||
|
||||
public abstract void start();
|
||||
|
||||
public abstract void stop();
|
||||
|
||||
protected ReentrantLock lockMuteOnPreparedCount = new ReentrantLock();
|
||||
public void muteNextOnPrepare() {
|
||||
lockMuteOnPreparedCount.lock();
|
||||
Log.d(MPI_TAG, "muteNextOnPrepare()");
|
||||
try {
|
||||
this.muteOnPreparedCount++;
|
||||
}
|
||||
finally {
|
||||
lockMuteOnPreparedCount.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
protected ReentrantLock lockMuteOnSeekCount = new ReentrantLock();
|
||||
public void muteNextSeek() {
|
||||
lockMuteOnSeekCount.lock();
|
||||
Log.d(MPI_TAG, "muteNextOnSeek()");
|
||||
try {
|
||||
this.muteOnSeekCount++;
|
||||
}
|
||||
finally {
|
||||
lockMuteOnSeekCount.unlock();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
// Copyright 2011, Aocate, Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package com.aocate.media;
|
||||
|
||||
public class SpeedAdjustmentAlgorithm {
|
||||
/**
|
||||
* Use this to use the user-specified algorithm
|
||||
*/
|
||||
public static int DEFAULT = 0;
|
||||
|
||||
/**
|
||||
* Better for voice audio
|
||||
*/
|
||||
public static int SONIC = 1;
|
||||
/**
|
||||
* Better for music audio
|
||||
*/
|
||||
public static int WSOLA = 2;
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
// Copyright 2011, Aocate, Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package com.aocate.presto.service;
|
||||
|
||||
oneway interface IDeathCallback_0_8 {
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
// Copyright 2011, Aocate, Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package com.aocate.presto.service;
|
||||
|
||||
interface IOnBufferingUpdateListenerCallback_0_8 {
|
||||
void onBufferingUpdate(int percent);
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
// Copyright 2011, Aocate, Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package com.aocate.presto.service;
|
||||
|
||||
interface IOnCompletionListenerCallback_0_8 {
|
||||
void onCompletion();
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
// Copyright 2011, Aocate, Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package com.aocate.presto.service;
|
||||
|
||||
interface IOnErrorListenerCallback_0_8 {
|
||||
boolean onError(int what, int extra);
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
// Copyright 2011, Aocate, Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package com.aocate.presto.service;
|
||||
|
||||
interface IOnInfoListenerCallback_0_8 {
|
||||
boolean onInfo(int what, int extra);
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
// Copyright 2011, Aocate, Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package com.aocate.presto.service;
|
||||
|
||||
interface IOnPitchAdjustmentAvailableChangedListenerCallback_0_8 {
|
||||
void onPitchAdjustmentAvailableChanged(boolean pitchAdjustmentAvailable);
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
// Copyright 2011, Aocate, Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package com.aocate.presto.service;
|
||||
|
||||
interface IOnPreparedListenerCallback_0_8 {
|
||||
void onPrepared();
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
// Copyright 2011, Aocate, Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package com.aocate.presto.service;
|
||||
|
||||
interface IOnSeekCompleteListenerCallback_0_8 {
|
||||
void onSeekComplete();
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
// Copyright 2011, Aocate, Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package com.aocate.presto.service;
|
||||
|
||||
interface IOnSpeedAdjustmentAvailableChangedListenerCallback_0_8 {
|
||||
void onSpeedAdjustmentAvailableChanged(boolean speedAdjustmentAvailable);
|
||||
}
|
|
@ -0,0 +1,75 @@
|
|||
// Copyright 2011, Aocate, Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package com.aocate.presto.service;
|
||||
|
||||
import com.aocate.presto.service.IDeathCallback_0_8;
|
||||
import com.aocate.presto.service.IOnBufferingUpdateListenerCallback_0_8;
|
||||
import com.aocate.presto.service.IOnCompletionListenerCallback_0_8;
|
||||
import com.aocate.presto.service.IOnErrorListenerCallback_0_8;
|
||||
import com.aocate.presto.service.IOnPitchAdjustmentAvailableChangedListenerCallback_0_8;
|
||||
import com.aocate.presto.service.IOnPreparedListenerCallback_0_8;
|
||||
import com.aocate.presto.service.IOnSeekCompleteListenerCallback_0_8;
|
||||
import com.aocate.presto.service.IOnSpeedAdjustmentAvailableChangedListenerCallback_0_8;
|
||||
import com.aocate.presto.service.IOnInfoListenerCallback_0_8;
|
||||
|
||||
interface IPlayMedia_0_8 {
|
||||
boolean canSetPitch(long sessionId);
|
||||
boolean canSetSpeed(long sessionId);
|
||||
float getCurrentPitchStepsAdjustment(long sessionId);
|
||||
int getCurrentPosition(long sessionId);
|
||||
float getCurrentSpeedMultiplier(long sessionId);
|
||||
int getDuration(long sessionId);
|
||||
float getMaxSpeedMultiplier(long sessionId);
|
||||
float getMinSpeedMultiplier(long sessionId);
|
||||
int getVersionCode();
|
||||
String getVersionName();
|
||||
boolean isLooping(long sessionId);
|
||||
boolean isPlaying(long sessionId);
|
||||
void pause(long sessionId);
|
||||
void prepare(long sessionId);
|
||||
void prepareAsync(long sessionId);
|
||||
void registerOnBufferingUpdateCallback(long sessionId, IOnBufferingUpdateListenerCallback_0_8 cb);
|
||||
void registerOnCompletionCallback(long sessionId, IOnCompletionListenerCallback_0_8 cb);
|
||||
void registerOnErrorCallback(long sessionId, IOnErrorListenerCallback_0_8 cb);
|
||||
void registerOnInfoCallback(long sessionId, IOnInfoListenerCallback_0_8 cb);
|
||||
void registerOnPitchAdjustmentAvailableChangedCallback(long sessionId, IOnPitchAdjustmentAvailableChangedListenerCallback_0_8 cb);
|
||||
void registerOnPreparedCallback(long sessionId, IOnPreparedListenerCallback_0_8 cb);
|
||||
void registerOnSeekCompleteCallback(long sessionId, IOnSeekCompleteListenerCallback_0_8 cb);
|
||||
void registerOnSpeedAdjustmentAvailableChangedCallback(long sessionId, IOnSpeedAdjustmentAvailableChangedListenerCallback_0_8 cb);
|
||||
void release(long sessionId);
|
||||
void reset(long sessionId);
|
||||
void seekTo(long sessionId, int msec);
|
||||
void setAudioStreamType(long sessionId, int streamtype);
|
||||
void setDataSourceString(long sessionId, String path);
|
||||
void setDataSourceUri(long sessionId, in Uri uri);
|
||||
void setEnableSpeedAdjustment(long sessionId, boolean enableSpeedAdjustment);
|
||||
void setLooping(long sessionId, boolean looping);
|
||||
void setPitchStepsAdjustment(long sessionId, float pitchSteps);
|
||||
void setPlaybackPitch(long sessionId, float f);
|
||||
void setPlaybackSpeed(long sessionId, float f);
|
||||
void setSpeedAdjustmentAlgorithm(long sessionId, int algorithm);
|
||||
void setVolume(long sessionId, float left, float right);
|
||||
void start(long sessionId);
|
||||
long startSession(IDeathCallback_0_8 cb);
|
||||
void stop(long sessionId);
|
||||
void unregisterOnBufferingUpdateCallback(long sessionId, IOnBufferingUpdateListenerCallback_0_8 cb);
|
||||
void unregisterOnCompletionCallback(long sessionId, IOnCompletionListenerCallback_0_8 cb);
|
||||
void unregisterOnErrorCallback(long sessionId, IOnErrorListenerCallback_0_8 cb);
|
||||
void unregisterOnInfoCallback(long sessionId, IOnInfoListenerCallback_0_8 cb);
|
||||
void unregisterOnPitchAdjustmentAvailableChangedCallback(long sessionId, IOnPitchAdjustmentAvailableChangedListenerCallback_0_8 cb);
|
||||
void unregisterOnPreparedCallback(long sessionId, IOnPreparedListenerCallback_0_8 cb);
|
||||
void unregisterOnSeekCompleteCallback(long sessionId, IOnSeekCompleteListenerCallback_0_8 cb);
|
||||
void unregisterOnSpeedAdjustmentAvailableChangedCallback(long sessionId, IOnSpeedAdjustmentAvailableChangedListenerCallback_0_8 cb);
|
||||
}
|
|
@ -1,8 +1,6 @@
|
|||
package de.danoeh.antennapod;
|
||||
|
||||
public final class AppConfig {
|
||||
/** Should be used for debug logging. */
|
||||
public final static boolean DEBUG = true;
|
||||
/** Should be used when setting User-Agent header for HTTP-requests. */
|
||||
public final static String USER_AGENT = "AntennaPod/0.9.8.2";
|
||||
public final static String USER_AGENT = "AntennaPod/0.9.8.3";
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ import de.danoeh.antennapod.asynctask.ImageLoader;
|
|||
import de.danoeh.antennapod.feed.EventDistributor;
|
||||
import de.danoeh.antennapod.preferences.PlaybackPreferences;
|
||||
import de.danoeh.antennapod.preferences.UserPreferences;
|
||||
import de.danoeh.antennapod.spa.SPAUtil;
|
||||
|
||||
/** Main application class. */
|
||||
public class PodcastApp extends Application {
|
||||
|
@ -31,6 +32,8 @@ public class PodcastApp extends Application {
|
|||
UserPreferences.createInstance(this);
|
||||
PlaybackPreferences.createInstance(this);
|
||||
EventDistributor.getInstance();
|
||||
|
||||
SPAUtil.sendSPAppsQueryFeedsIntent(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -4,8 +4,6 @@ import android.os.Bundle;
|
|||
import android.support.v7.app.ActionBarActivity;
|
||||
import android.webkit.WebView;
|
||||
import android.webkit.WebViewClient;
|
||||
|
||||
|
||||
import de.danoeh.antennapod.R;
|
||||
|
||||
/** Displays the 'about' screen */
|
||||
|
|
|
@ -1,84 +1,68 @@
|
|||
package de.danoeh.antennapod.activity;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import android.support.v4.app.NavUtils;
|
||||
import android.support.v7.app.ActionBarActivity;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import de.danoeh.antennapod.activity.gpoddernet.GpodnetMainActivity;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.app.ProgressDialog;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.ActionBarActivity;
|
||||
import android.util.Log;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
|
||||
import de.danoeh.antennapod.AppConfig;
|
||||
import de.danoeh.antennapod.BuildConfig;
|
||||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.feed.Feed;
|
||||
import de.danoeh.antennapod.activity.gpoddernet.GpodnetMainActivity;
|
||||
import de.danoeh.antennapod.preferences.UserPreferences;
|
||||
import de.danoeh.antennapod.storage.DownloadRequestException;
|
||||
import de.danoeh.antennapod.storage.DownloadRequester;
|
||||
import de.danoeh.antennapod.util.ConnectionTester;
|
||||
import de.danoeh.antennapod.util.DownloadError;
|
||||
import de.danoeh.antennapod.util.StorageUtils;
|
||||
import de.danoeh.antennapod.util.URLChecker;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
/** Activity for adding a Feed */
|
||||
/**
|
||||
* Activity for adding a Feed
|
||||
*/
|
||||
public class AddFeedActivity extends ActionBarActivity {
|
||||
private static final String TAG = "AddFeedActivity";
|
||||
private static final String TAG = "AddFeedActivity";
|
||||
|
||||
private DownloadRequester requester;
|
||||
|
||||
private EditText etxtFeedurl;
|
||||
private Button butBrowseMiroGuide;
|
||||
private EditText etxtFeedurl;
|
||||
private Button butBrowseMiroGuide;
|
||||
private Button butBrowserGpoddernet;
|
||||
private Button butOpmlImport;
|
||||
private Button butConfirm;
|
||||
private Button butCancel;
|
||||
private Button butOpmlImport;
|
||||
private Button butConfirm;
|
||||
|
||||
private ProgressDialog progDialog;
|
||||
private ProgressDialog progDialog;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
if (AppConfig.DEBUG)
|
||||
Log.d(TAG, "Was started with Intent " + getIntent().getAction()
|
||||
+ " and Data " + getIntent().getDataString());
|
||||
setTheme(UserPreferences.getTheme());
|
||||
super.onCreate(savedInstanceState);
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
StorageUtils.checkStorageAvailability(this);
|
||||
setContentView(R.layout.addfeed);
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Was started with Intent " + getIntent().getAction()
|
||||
+ " and Data " + getIntent().getDataString());
|
||||
setTheme(UserPreferences.getTheme());
|
||||
super.onCreate(savedInstanceState);
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
StorageUtils.checkStorageAvailability(this);
|
||||
setContentView(R.layout.addfeed);
|
||||
|
||||
requester = DownloadRequester.getInstance();
|
||||
progDialog = new ProgressDialog(this);
|
||||
progDialog = new ProgressDialog(this);
|
||||
|
||||
etxtFeedurl = (EditText) findViewById(R.id.etxtFeedurl);
|
||||
if (StringUtils.equals(getIntent().getAction(), Intent.ACTION_VIEW)) {
|
||||
etxtFeedurl.setText(getIntent().getDataString());
|
||||
}
|
||||
etxtFeedurl = (EditText) findViewById(R.id.etxtFeedurl);
|
||||
if (StringUtils.equals(getIntent().getAction(), Intent.ACTION_VIEW)) {
|
||||
etxtFeedurl.setText(getIntent().getDataString());
|
||||
}
|
||||
|
||||
butBrowseMiroGuide = (Button) findViewById(R.id.butBrowseMiroguide);
|
||||
butBrowseMiroGuide = (Button) findViewById(R.id.butBrowseMiroguide);
|
||||
butBrowserGpoddernet = (Button) findViewById(R.id.butBrowseGpoddernet);
|
||||
butOpmlImport = (Button) findViewById(R.id.butOpmlImport);
|
||||
butConfirm = (Button) findViewById(R.id.butConfirm);
|
||||
butCancel = (Button) findViewById(R.id.butCancel);
|
||||
butOpmlImport = (Button) findViewById(R.id.butOpmlImport);
|
||||
butConfirm = (Button) findViewById(R.id.butConfirm);
|
||||
|
||||
butBrowseMiroGuide.setOnClickListener(new OnClickListener() {
|
||||
butBrowseMiroGuide.setOnClickListener(new OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
startActivity(new Intent(AddFeedActivity.this,
|
||||
MiroGuideMainActivity.class));
|
||||
}
|
||||
});
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
startActivity(new Intent(AddFeedActivity.this,
|
||||
MiroGuideMainActivity.class));
|
||||
}
|
||||
});
|
||||
butBrowserGpoddernet.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
|
@ -87,141 +71,74 @@ public class AddFeedActivity extends ActionBarActivity {
|
|||
}
|
||||
});
|
||||
|
||||
butOpmlImport.setOnClickListener(new OnClickListener() {
|
||||
butOpmlImport.setOnClickListener(new OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
startActivity(new Intent(AddFeedActivity.this,
|
||||
OpmlImportFromPathActivity.class));
|
||||
}
|
||||
});
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
startActivity(new Intent(AddFeedActivity.this,
|
||||
OpmlImportFromPathActivity.class));
|
||||
}
|
||||
});
|
||||
|
||||
butConfirm.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
addNewFeed();
|
||||
}
|
||||
});
|
||||
butConfirm.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Intent intent = new Intent(AddFeedActivity.this, DefaultOnlineFeedViewActivity.class);
|
||||
intent.putExtra(OnlineFeedViewActivity.ARG_FEEDURL, etxtFeedurl.getText().toString());
|
||||
intent.putExtra(OnlineFeedViewActivity.ARG_TITLE, getSupportActionBar().getTitle());
|
||||
startActivity(intent);
|
||||
}
|
||||
});
|
||||
|
||||
butCancel.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
setResult(RESULT_CANCELED);
|
||||
finish();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
StorageUtils.checkStorageAvailability(this);
|
||||
Intent intent = getIntent();
|
||||
if (intent.getAction() != null
|
||||
&& intent.getAction().equals(Intent.ACTION_SEND)) {
|
||||
if (AppConfig.DEBUG)
|
||||
Log.d(TAG, "Resuming with ACTION_SEND intent");
|
||||
String text = intent.getStringExtra(Intent.EXTRA_TEXT);
|
||||
if (text != null) {
|
||||
etxtFeedurl.setText(text);
|
||||
} else {
|
||||
if (AppConfig.DEBUG)
|
||||
Log.d(TAG, "No text was sent");
|
||||
}
|
||||
}
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
StorageUtils.checkStorageAvailability(this);
|
||||
Intent intent = getIntent();
|
||||
if (intent.getAction() != null
|
||||
&& intent.getAction().equals(Intent.ACTION_SEND)) {
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Resuming with ACTION_SEND intent");
|
||||
String text = intent.getStringExtra(Intent.EXTRA_TEXT);
|
||||
if (text != null) {
|
||||
etxtFeedurl.setText(text);
|
||||
} else {
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "No text was sent");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStop() {
|
||||
super.onStop();
|
||||
if (AppConfig.DEBUG)
|
||||
Log.d(TAG, "Stopping Activity");
|
||||
}
|
||||
@Override
|
||||
protected void onStop() {
|
||||
super.onStop();
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Stopping Activity");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPause() {
|
||||
super.onPause();
|
||||
}
|
||||
@Override
|
||||
protected void onPause() {
|
||||
super.onPause();
|
||||
}
|
||||
|
||||
/** Read the url text field and start downloading a new feed. */
|
||||
private void addNewFeed() {
|
||||
String url = etxtFeedurl.getText().toString();
|
||||
url = URLChecker.prepareURL(url);
|
||||
|
||||
if (url != null) {
|
||||
final Feed feed = new Feed(url, new Date());
|
||||
final ConnectionTester conTester = new ConnectionTester(url,
|
||||
new ConnectionTester.Callback() {
|
||||
|
||||
@Override
|
||||
public void onConnectionSuccessful() {
|
||||
try {
|
||||
requester.downloadFeed(AddFeedActivity.this,
|
||||
feed);
|
||||
if (progDialog.isShowing()) {
|
||||
progDialog.dismiss();
|
||||
finish();
|
||||
}
|
||||
} catch (DownloadRequestException e) {
|
||||
e.printStackTrace();
|
||||
onConnectionFailure(DownloadError.ERROR_REQUEST_ERROR);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConnectionFailure(DownloadError reason) {
|
||||
handleDownloadError(reason);
|
||||
}
|
||||
});
|
||||
observeDownload(feed);
|
||||
new Thread(conTester).start();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/** Start listening for any intents send by the DownloadService. */
|
||||
private void observeDownload(Feed feed) {
|
||||
progDialog.show();
|
||||
progDialog.setMessage(getString(R.string.loading_label));
|
||||
}
|
||||
|
||||
private void handleDownloadError(DownloadError reason) {
|
||||
final AlertDialog errorDialog = new AlertDialog.Builder(this).create();
|
||||
errorDialog.setTitle(R.string.error_label);
|
||||
errorDialog.setMessage(getString(R.string.error_msg_prefix) + " "
|
||||
+ reason.getErrorString(this));
|
||||
errorDialog.setButton(getString(android.R.string.ok),
|
||||
new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
errorDialog.dismiss();
|
||||
}
|
||||
});
|
||||
if (progDialog.isShowing()) {
|
||||
progDialog.dismiss();
|
||||
}
|
||||
errorDialog.show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
super.onCreateOptionsMenu(menu);
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case android.R.id.home:
|
||||
finish();
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case android.R.id.home:
|
||||
finish();
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ import android.view.View.OnLongClickListener;
|
|||
import android.view.Window;
|
||||
import android.widget.*;
|
||||
import android.widget.ImageView.ScaleType;
|
||||
import de.danoeh.antennapod.AppConfig;
|
||||
import de.danoeh.antennapod.BuildConfig;
|
||||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.adapter.ChapterListAdapter;
|
||||
import de.danoeh.antennapod.asynctask.ImageLoader;
|
||||
|
@ -67,29 +67,29 @@ public class AudioplayerActivity extends MediaplayerActivity {
|
|||
FragmentTransaction fT = getSupportFragmentManager().beginTransaction();
|
||||
|
||||
if (coverFragment != null) {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Removing cover fragment");
|
||||
fT.remove(coverFragment);
|
||||
}
|
||||
if (descriptionFragment != null) {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Removing description fragment");
|
||||
fT.remove(descriptionFragment);
|
||||
}
|
||||
if (chapterFragment != null) {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Removing chapter fragment");
|
||||
fT.remove(chapterFragment);
|
||||
}
|
||||
if (currentlyShownFragment != null) {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Removing currently shown fragment");
|
||||
fT.remove(currentlyShownFragment);
|
||||
}
|
||||
for (int i = 0; i < detachedFragments.length; i++) {
|
||||
Fragment f = detachedFragments[i];
|
||||
if (f != null) {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Removing detached fragment");
|
||||
fT.remove(f);
|
||||
}
|
||||
|
@ -106,7 +106,7 @@ public class AudioplayerActivity extends MediaplayerActivity {
|
|||
@Override
|
||||
protected void onStop() {
|
||||
super.onStop();
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "onStop");
|
||||
|
||||
}
|
||||
|
@ -120,7 +120,7 @@ public class AudioplayerActivity extends MediaplayerActivity {
|
|||
}
|
||||
|
||||
private void savePreferences() {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Saving preferences");
|
||||
SharedPreferences prefs = getSharedPreferences(PREFS, MODE_PRIVATE);
|
||||
SharedPreferences.Editor editor = prefs.edit();
|
||||
|
@ -147,7 +147,7 @@ public class AudioplayerActivity extends MediaplayerActivity {
|
|||
@Override
|
||||
protected void onSaveInstanceState(Bundle outState) {
|
||||
// super.onSaveInstanceState(outState); would cause crash
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "onSaveInstanceState");
|
||||
}
|
||||
|
||||
|
@ -171,7 +171,7 @@ public class AudioplayerActivity extends MediaplayerActivity {
|
|||
* @return true if restoreFromPrefernces changed the activity's state
|
||||
*/
|
||||
private boolean restoreFromPreferences() {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Restoring instance state");
|
||||
SharedPreferences prefs = getSharedPreferences(PREFS, MODE_PRIVATE);
|
||||
int savedPosition = prefs.getInt(PREF_KEY_SELECTED_FRAGMENT_POSITION,
|
||||
|
@ -186,11 +186,11 @@ public class AudioplayerActivity extends MediaplayerActivity {
|
|||
switchToFragment(savedPosition);
|
||||
return true;
|
||||
} else if (controller == null || controller.getMedia() == null) {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG,
|
||||
"Couldn't restore from preferences: controller or media was null");
|
||||
} else {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG,
|
||||
"Couldn't restore from preferences: savedPosition was -1 or saved identifier and playable identifier didn't match.\nsavedPosition: "
|
||||
+ savedPosition + ", id: " + playableId);
|
||||
|
@ -205,7 +205,7 @@ public class AudioplayerActivity extends MediaplayerActivity {
|
|||
if (getIntent().getAction() != null
|
||||
&& getIntent().getAction().equals(Intent.ACTION_VIEW)) {
|
||||
Intent intent = getIntent();
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Received VIEW intent: "
|
||||
+ intent.getData().getPath());
|
||||
ExternalMedia media = new ExternalMedia(intent.getData().getPath(),
|
||||
|
@ -233,7 +233,7 @@ public class AudioplayerActivity extends MediaplayerActivity {
|
|||
|
||||
@Override
|
||||
protected void onAwaitingVideoSurface() {
|
||||
if (AppConfig.DEBUG) Log.d(TAG, "onAwaitingVideoSurface was called in audio player -> switching to video player");
|
||||
if (BuildConfig.DEBUG) Log.d(TAG, "onAwaitingVideoSurface was called in audio player -> switching to video player");
|
||||
startActivity(new Intent(this, VideoplayerActivity.class));
|
||||
}
|
||||
|
||||
|
@ -255,7 +255,7 @@ public class AudioplayerActivity extends MediaplayerActivity {
|
|||
* @param pos Must be POS_COVER, POS_DESCR, or POS_CHAPTERS
|
||||
*/
|
||||
private void switchToFragment(int pos) {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Switching contentView to position " + pos);
|
||||
if (currentlyShownPosition != pos && controller != null) {
|
||||
Playable media = controller.getMedia();
|
||||
|
@ -305,7 +305,7 @@ public class AudioplayerActivity extends MediaplayerActivity {
|
|||
if (currentlyShownFragment != null) {
|
||||
currentlyShownPosition = pos;
|
||||
if (detachedFragments[pos] != null) {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Reattaching fragment at position "
|
||||
+ pos);
|
||||
ft.attach(detachedFragments[pos]);
|
||||
|
@ -330,6 +330,10 @@ public class AudioplayerActivity extends MediaplayerActivity {
|
|||
R.attr.navigation_shownotes, R.attr.navigation_chapters});
|
||||
final Playable media = controller.getMedia();
|
||||
if (butNavLeft != null && butNavRight != null && media != null) {
|
||||
|
||||
butNavRight.setTag(R.id.imageloader_key, null);
|
||||
butNavLeft.setTag(R.id.imageloader_key, null);
|
||||
|
||||
switch (currentlyShownPosition) {
|
||||
case POS_COVER:
|
||||
butNavLeft.setScaleType(ScaleType.CENTER);
|
||||
|
@ -519,7 +523,7 @@ public class AudioplayerActivity extends MediaplayerActivity {
|
|||
@Override
|
||||
protected void onReloadNotification(int notificationCode) {
|
||||
if (notificationCode == PlaybackService.EXTRA_CODE_VIDEO) {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG,
|
||||
"ReloadNotification received, switching to Videoplayer now");
|
||||
finish();
|
||||
|
|
|
@ -3,7 +3,6 @@ package de.danoeh.antennapod.activity;
|
|||
import android.content.Context;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.NavUtils;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
|
@ -90,10 +89,11 @@ public class DefaultOnlineFeedViewActivity extends OnlineFeedViewActivity {
|
|||
@Override
|
||||
public void onClick(View v) {
|
||||
try {
|
||||
Feed f = new Feed(feed.getDownload_url(), new Date(), feed.getTitle());
|
||||
f.setPreferences(feed.getPreferences());
|
||||
DownloadRequester.getInstance().downloadFeed(
|
||||
DefaultOnlineFeedViewActivity.this,
|
||||
new Feed(feed.getDownload_url(), new Date(), feed
|
||||
.getTitle()));
|
||||
f);
|
||||
} catch (DownloadRequestException e) {
|
||||
e.printStackTrace();
|
||||
DownloadRequestErrorDialogCreator.newRequestErrorDialog(DefaultOnlineFeedViewActivity.this,
|
||||
|
|
|
@ -1,10 +1,5 @@
|
|||
package de.danoeh.antennapod.activity;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.content.DialogInterface;
|
||||
|
@ -20,19 +15,17 @@ import android.view.MenuInflater;
|
|||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.*;
|
||||
import android.widget.AdapterView.OnItemClickListener;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.ListView;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import de.danoeh.antennapod.AppConfig;
|
||||
import de.danoeh.antennapod.BuildConfig;
|
||||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.preferences.UserPreferences;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
|
||||
/**
|
||||
* Let's the user choose a directory on the storage device. The selected folder
|
||||
* will be sent back to the starting activity as an activity result.
|
||||
|
@ -127,7 +120,7 @@ public class DirectoryChooserActivity extends ActionBarActivity {
|
|||
@Override
|
||||
public void onItemClick(AdapterView<?> adapter, View view,
|
||||
int position, long id) {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Selected index: " + position);
|
||||
if (filesInDir != null && position >= 0
|
||||
&& position < filesInDir.length) {
|
||||
|
@ -160,7 +153,7 @@ public class DirectoryChooserActivity extends ActionBarActivity {
|
|||
* selected folder can also be null.
|
||||
*/
|
||||
private void returnSelectedFolder() {
|
||||
if (selectedDir != null && AppConfig.DEBUG)
|
||||
if (selectedDir != null && BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Returning " + selectedDir.getAbsolutePath()
|
||||
+ " as result");
|
||||
Intent resultData = new Intent();
|
||||
|
@ -222,19 +215,19 @@ public class DirectoryChooserActivity extends ActionBarActivity {
|
|||
listDirectoriesAdapter.notifyDataSetChanged();
|
||||
fileObserver = createFileObserver(dir.getAbsolutePath());
|
||||
fileObserver.startWatching();
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Changed directory to " + dir.getAbsolutePath());
|
||||
} else {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG,
|
||||
"Could not change folder: contents of dir were null");
|
||||
}
|
||||
} else {
|
||||
if (dir == null) {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Could not change folder: dir was null");
|
||||
} else {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Could not change folder: dir is no directory");
|
||||
}
|
||||
}
|
||||
|
@ -266,7 +259,7 @@ public class DirectoryChooserActivity extends ActionBarActivity {
|
|||
|
||||
@Override
|
||||
public void onEvent(int event, String path) {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "FileObserver received event " + event);
|
||||
runOnUiThread(new Runnable() {
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ import android.view.View;
|
|||
import android.widget.AdapterView;
|
||||
import android.widget.AdapterView.OnItemLongClickListener;
|
||||
import android.widget.ListView;
|
||||
import de.danoeh.antennapod.AppConfig;
|
||||
import de.danoeh.antennapod.BuildConfig;
|
||||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.adapter.DownloadlistAdapter;
|
||||
import de.danoeh.antennapod.asynctask.DownloadObserver;
|
||||
|
@ -53,7 +53,7 @@ public class DownloadActivity extends ActionBarActivity implements
|
|||
|
||||
listview = (ListView) findViewById(R.id.listview);
|
||||
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Creating Activity");
|
||||
requester = DownloadRequester.getInstance();
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
@ -78,7 +78,7 @@ public class DownloadActivity extends ActionBarActivity implements
|
|||
@Override
|
||||
protected void onStop() {
|
||||
super.onStop();
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Stopping Activity");
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,106 @@
|
|||
package de.danoeh.antennapod.activity;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.ActionBarActivity;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.TextView;
|
||||
import de.danoeh.antennapod.BuildConfig;
|
||||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.preferences.UserPreferences;
|
||||
import de.danoeh.antennapod.service.download.DownloadRequest;
|
||||
import de.danoeh.antennapod.storage.DownloadRequester;
|
||||
|
||||
/**
|
||||
* Shows a username and a password text field.
|
||||
* The activity MUST be started with the ARG_DOWNlOAD_REQUEST argument set to a non-null value.
|
||||
* Other arguments are optional.
|
||||
* The activity's result will be the same DownloadRequest with the entered username and password.
|
||||
*/
|
||||
public class DownloadAuthenticationActivity extends ActionBarActivity {
|
||||
private static final String TAG = "DownloadAuthenticationActivity";
|
||||
|
||||
/**
|
||||
* The download request object that contains information about the resource that requires a username and a password
|
||||
*/
|
||||
public static final String ARG_DOWNLOAD_REQUEST = "request";
|
||||
/**
|
||||
* True if the request should be sent to the DownloadRequester when this activity is finished, false otherwise.
|
||||
* The default value is false.
|
||||
*/
|
||||
public static final String ARG_SEND_TO_DOWNLOAD_REQUESTER_BOOL = "send_to_downloadrequester";
|
||||
|
||||
public static final String RESULT_REQUEST = "request";
|
||||
|
||||
private EditText etxtUsername;
|
||||
private EditText etxtPassword;
|
||||
private Button butConfirm;
|
||||
private Button butCancel;
|
||||
private TextView txtvDescription;
|
||||
|
||||
private DownloadRequest request;
|
||||
private boolean sendToDownloadRequester;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
setTheme(UserPreferences.getTheme());
|
||||
super.onCreate(savedInstanceState);
|
||||
getSupportActionBar().hide();
|
||||
setContentView(R.layout.download_authentication_activity);
|
||||
|
||||
etxtUsername = (EditText) findViewById(R.id.etxtUsername);
|
||||
etxtPassword = (EditText) findViewById(R.id.etxtPassword);
|
||||
butConfirm = (Button) findViewById(R.id.butConfirm);
|
||||
butCancel = (Button) findViewById(R.id.butCancel);
|
||||
txtvDescription = (TextView) findViewById(R.id.txtvDescription);
|
||||
|
||||
if (!getIntent().hasExtra(ARG_DOWNLOAD_REQUEST)) throw new IllegalArgumentException("Download request missing");
|
||||
request = getIntent().getParcelableExtra(ARG_DOWNLOAD_REQUEST);
|
||||
sendToDownloadRequester = getIntent().getBooleanExtra(ARG_SEND_TO_DOWNLOAD_REQUESTER_BOOL, false);
|
||||
|
||||
if (savedInstanceState != null) {
|
||||
etxtUsername.setText(savedInstanceState.getString("username"));
|
||||
etxtPassword.setText(savedInstanceState.getString("password"));
|
||||
}
|
||||
|
||||
txtvDescription.setText(txtvDescription.getText() + ":\n\n" + request.getTitle());
|
||||
|
||||
butCancel.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
setResult(Activity.RESULT_CANCELED);
|
||||
finish();
|
||||
}
|
||||
});
|
||||
|
||||
butConfirm.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
String username = etxtUsername.getText().toString();
|
||||
String password = etxtPassword.getText().toString();
|
||||
request.setUsername(username);
|
||||
request.setPassword(password);
|
||||
Intent result = new Intent();
|
||||
result.putExtra(RESULT_REQUEST, request);
|
||||
setResult(Activity.RESULT_OK, result);
|
||||
|
||||
if (sendToDownloadRequester) {
|
||||
if (BuildConfig.DEBUG) Log.d(TAG, "Sending request to DownloadRequester");
|
||||
DownloadRequester.getInstance().download(DownloadAuthenticationActivity.this, request);
|
||||
}
|
||||
finish();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onSaveInstanceState(Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
outState.putString("username", etxtUsername.getText().toString());
|
||||
outState.putString("password", etxtPassword.getText().toString());
|
||||
}
|
||||
}
|
|
@ -2,10 +2,8 @@ package de.danoeh.antennapod.activity;
|
|||
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Bundle;
|
||||
|
||||
import android.support.v4.app.NavUtils;
|
||||
import android.support.v7.app.ActionBarActivity;
|
||||
|
||||
import android.util.Log;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
|
|
|
@ -11,7 +11,7 @@ import android.widget.CheckBox;
|
|||
import android.widget.CompoundButton;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
import de.danoeh.antennapod.AppConfig;
|
||||
import de.danoeh.antennapod.BuildConfig;
|
||||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.asynctask.ImageLoader;
|
||||
import de.danoeh.antennapod.dialog.DownloadRequestErrorDialogCreator;
|
||||
|
@ -65,9 +65,9 @@ public class FeedInfoActivity extends ActionBarActivity {
|
|||
protected void onPostExecute(Feed result) {
|
||||
if (result != null) {
|
||||
feed = result;
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Language is " + feed.getLanguage());
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Author is " + feed.getAuthor());
|
||||
imgvCover.post(new Runnable() {
|
||||
|
||||
|
|
|
@ -2,7 +2,6 @@ package de.danoeh.antennapod.activity;
|
|||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.SearchManager;
|
||||
import android.app.SearchableInfo;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
|
@ -17,12 +16,10 @@ import android.support.v4.view.MenuItemCompat;
|
|||
import android.support.v7.app.ActionBarActivity;
|
||||
import android.support.v7.widget.SearchView;
|
||||
import android.util.Log;
|
||||
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.Window;
|
||||
import de.danoeh.antennapod.AppConfig;
|
||||
import de.danoeh.antennapod.BuildConfig;
|
||||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.asynctask.FeedRemover;
|
||||
import de.danoeh.antennapod.dialog.ConfirmationDialog;
|
||||
|
@ -81,7 +78,7 @@ public class FeedItemlistActivity extends ActionBarActivity {
|
|||
|
||||
@Override
|
||||
protected Feed doInBackground(Long... longs) {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Loading feed data in background");
|
||||
return DBReader.getFeed(FeedItemlistActivity.this, longs[0]);
|
||||
}
|
||||
|
@ -89,14 +86,14 @@ public class FeedItemlistActivity extends ActionBarActivity {
|
|||
@Override
|
||||
protected void onCancelled(Feed feed) {
|
||||
super.onCancelled(feed);
|
||||
if (AppConfig.DEBUG) Log.d(TAG, "load task was cancelled");
|
||||
if (BuildConfig.DEBUG) Log.d(TAG, "load task was cancelled");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(Feed result) {
|
||||
super.onPostExecute(result);
|
||||
if (result != null) {
|
||||
if (AppConfig.DEBUG) Log.d(TAG, "Finished loading feed data");
|
||||
if (BuildConfig.DEBUG) Log.d(TAG, "Finished loading feed data");
|
||||
feed = result;
|
||||
setTitle(feed.getTitle());
|
||||
|
||||
|
|
|
@ -1,24 +1,22 @@
|
|||
package de.danoeh.antennapod.activity;
|
||||
|
||||
|
||||
import android.support.v7.app.ActionBarActivity;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import org.shredzone.flattr4j.exception.FlattrException;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.ActionBarActivity;
|
||||
import android.util.Log;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.widget.Button;
|
||||
import android.widget.TextView;
|
||||
|
||||
import de.danoeh.antennapod.AppConfig;
|
||||
import de.danoeh.antennapod.BuildConfig;
|
||||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.preferences.UserPreferences;
|
||||
import de.danoeh.antennapod.util.flattr.FlattrUtils;
|
||||
import org.shredzone.flattr4j.exception.FlattrException;
|
||||
|
||||
/** Guides the user through the authentication process */
|
||||
|
||||
|
@ -39,7 +37,7 @@ public class FlattrAuthActivity extends ActionBarActivity {
|
|||
super.onCreate(savedInstanceState);
|
||||
singleton = this;
|
||||
authSuccessful = false;
|
||||
if (AppConfig.DEBUG) Log.d(TAG, "Activity created");
|
||||
if (BuildConfig.DEBUG) Log.d(TAG, "Activity created");
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
setContentView(R.layout.flattr_auth);
|
||||
txtvExplanation = (TextView) findViewById(R.id.txtvExplanation);
|
||||
|
@ -74,10 +72,10 @@ public class FlattrAuthActivity extends ActionBarActivity {
|
|||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
if (AppConfig.DEBUG) Log.d(TAG, "Activity resumed");
|
||||
if (BuildConfig.DEBUG) Log.d(TAG, "Activity resumed");
|
||||
Uri uri = getIntent().getData();
|
||||
if (uri != null) {
|
||||
if (AppConfig.DEBUG) Log.d(TAG, "Received uri");
|
||||
if (BuildConfig.DEBUG) Log.d(TAG, "Received uri");
|
||||
FlattrUtils.handleCallback(this, uri);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@ import android.view.MenuInflater;
|
|||
import android.view.MenuItem;
|
||||
import android.view.Window;
|
||||
import android.widget.TextView;
|
||||
import de.danoeh.antennapod.AppConfig;
|
||||
import de.danoeh.antennapod.BuildConfig;
|
||||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.dialog.DownloadRequestErrorDialogCreator;
|
||||
import de.danoeh.antennapod.feed.EventDistributor;
|
||||
|
@ -75,7 +75,7 @@ public class ItemviewActivity extends ActionBarActivity {
|
|||
if (currentLoadTask != null) {
|
||||
currentLoadTask.cancel(true);
|
||||
}
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Stopping Activity");
|
||||
}
|
||||
|
||||
|
@ -93,7 +93,7 @@ public class ItemviewActivity extends ActionBarActivity {
|
|||
@Override
|
||||
protected void onCancelled(FeedItem feedItem) {
|
||||
super.onCancelled(feedItem);
|
||||
if (AppConfig.DEBUG) Log.d(TAG, "loadTask was cancelled");
|
||||
if (BuildConfig.DEBUG) Log.d(TAG, "loadTask was cancelled");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -192,7 +192,7 @@ public class ItemviewActivity extends ActionBarActivity {
|
|||
@Override
|
||||
public void update(EventDistributor eventDistributor, Integer arg) {
|
||||
if ((EVENTS & arg) != 0) {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Received contentUpdate Intent.");
|
||||
if (item != null) {
|
||||
loadData(item.getId());
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
package de.danoeh.antennapod.activity;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import android.app.SearchManager;
|
||||
import android.app.SearchableInfo;
|
||||
import android.content.Context;
|
||||
|
@ -17,25 +15,26 @@ import android.support.v7.app.ActionBar;
|
|||
import android.support.v7.app.ActionBarActivity;
|
||||
import android.support.v7.widget.SearchView;
|
||||
import android.util.Log;
|
||||
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.Window;
|
||||
import de.danoeh.antennapod.AppConfig;
|
||||
import de.danoeh.antennapod.BuildConfig;
|
||||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.feed.EventDistributor;
|
||||
import de.danoeh.antennapod.fragment.EpisodesFragment;
|
||||
import de.danoeh.antennapod.fragment.ExternalPlayerFragment;
|
||||
import de.danoeh.antennapod.fragment.FeedlistFragment;
|
||||
import de.danoeh.antennapod.preferences.UserPreferences;
|
||||
import de.danoeh.antennapod.service.playback.PlaybackService;
|
||||
import de.danoeh.antennapod.service.download.DownloadService;
|
||||
import de.danoeh.antennapod.service.playback.PlaybackService;
|
||||
import de.danoeh.antennapod.storage.DBReader;
|
||||
import de.danoeh.antennapod.storage.DBTasks;
|
||||
import de.danoeh.antennapod.storage.DownloadRequester;
|
||||
import de.danoeh.antennapod.util.StorageUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/** The activity that is shown when the user launches the app. */
|
||||
public class MainActivity extends ActionBarActivity {
|
||||
private static final String TAG = "MainActivity";
|
||||
|
@ -121,7 +120,7 @@ public class MainActivity extends ActionBarActivity {
|
|||
@Override
|
||||
public void update(EventDistributor eventDistributor, Integer arg) {
|
||||
if ((EVENTS & arg) != 0) {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Received contentUpdate Intent.");
|
||||
updateProgressBarVisibility();
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@ import android.widget.ImageButton;
|
|||
import android.widget.SeekBar;
|
||||
import android.widget.SeekBar.OnSeekBarChangeListener;
|
||||
import android.widget.TextView;
|
||||
import de.danoeh.antennapod.AppConfig;
|
||||
import de.danoeh.antennapod.BuildConfig;
|
||||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.dialog.TimeDialog;
|
||||
import de.danoeh.antennapod.feed.FeedItem;
|
||||
|
@ -135,6 +135,12 @@ public abstract class MediaplayerActivity extends ActionBarActivity
|
|||
public void onPlaybackSpeedChange() {
|
||||
MediaplayerActivity.this.onPlaybackSpeedChange();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setScreenOn(boolean enable) {
|
||||
super.setScreenOn(enable);
|
||||
MediaplayerActivity.this.setScreenOn(enable);
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -151,11 +157,14 @@ public abstract class MediaplayerActivity extends ActionBarActivity
|
|||
setTheme(UserPreferences.getTheme());
|
||||
}
|
||||
|
||||
protected void setScreenOn(boolean enable) {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
chooseTheme();
|
||||
super.onCreate(savedInstanceState);
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Creating Activity");
|
||||
StorageUtils.checkStorageAvailability(this);
|
||||
setVolumeControlStream(AudioManager.STREAM_MUSIC);
|
||||
|
@ -213,7 +222,7 @@ public abstract class MediaplayerActivity extends ActionBarActivity
|
|||
@Override
|
||||
protected void onStop() {
|
||||
super.onStop();
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Activity stopped");
|
||||
if (controller != null) {
|
||||
controller.release();
|
||||
|
@ -223,7 +232,7 @@ public abstract class MediaplayerActivity extends ActionBarActivity
|
|||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Activity destroyed");
|
||||
}
|
||||
|
||||
|
@ -243,7 +252,8 @@ public abstract class MediaplayerActivity extends ActionBarActivity
|
|||
menu.findItem(R.id.support_item).setVisible(
|
||||
media != null && media.getPaymentLink() != null &&
|
||||
(media instanceof FeedMedia) &&
|
||||
((FeedMedia) media).getItem().getFlattrStatus().flattrable());
|
||||
((FeedMedia) media).getItem().getFlattrStatus().flattrable()
|
||||
);
|
||||
menu.findItem(R.id.share_link_item).setVisible(
|
||||
media != null && media.getWebsiteLink() != null);
|
||||
menu.findItem(R.id.visit_website_item).setVisible(
|
||||
|
@ -285,7 +295,8 @@ public abstract class MediaplayerActivity extends ActionBarActivity
|
|||
dialog.dismiss();
|
||||
controller.disableSleepTimer();
|
||||
}
|
||||
});
|
||||
}
|
||||
);
|
||||
stDialog.setNegativeButton(R.string.cancel_label,
|
||||
new DialogInterface.OnClickListener() {
|
||||
|
||||
|
@ -294,7 +305,8 @@ public abstract class MediaplayerActivity extends ActionBarActivity
|
|||
int which) {
|
||||
dialog.dismiss();
|
||||
}
|
||||
});
|
||||
}
|
||||
);
|
||||
stDialog.create().show();
|
||||
}
|
||||
break;
|
||||
|
@ -343,7 +355,7 @@ public abstract class MediaplayerActivity extends ActionBarActivity
|
|||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Resuming Activity");
|
||||
StorageUtils.checkStorageAvailability(this);
|
||||
controller.init();
|
||||
|
@ -378,7 +390,7 @@ public abstract class MediaplayerActivity extends ActionBarActivity
|
|||
}
|
||||
|
||||
private void updateProgressbarPosition(int position, int duration) {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Updating progressbar info");
|
||||
float progress = ((float) position) / duration;
|
||||
sbPosition.setProgress((int) (progress * sbPosition.getMax()));
|
||||
|
@ -391,7 +403,7 @@ public abstract class MediaplayerActivity extends ActionBarActivity
|
|||
* FeedMedia object.
|
||||
*/
|
||||
protected boolean loadMediaInfo() {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Loading media info");
|
||||
Playable media = controller.getMedia();
|
||||
if (media != null) {
|
||||
|
@ -451,7 +463,8 @@ public abstract class MediaplayerActivity extends ActionBarActivity
|
|||
dialog.dismiss();
|
||||
finish();
|
||||
}
|
||||
});
|
||||
}
|
||||
);
|
||||
errorDialog.create().show();
|
||||
}
|
||||
|
||||
|
|
|
@ -8,7 +8,6 @@ import android.support.v4.app.NavUtils;
|
|||
import android.support.v4.view.ViewPager;
|
||||
import android.support.v7.app.ActionBarActivity;
|
||||
import android.util.Log;
|
||||
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import de.danoeh.antennapod.R;
|
||||
|
|
|
@ -1,8 +1,5 @@
|
|||
package de.danoeh.antennapod.activity;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
|
@ -15,13 +12,8 @@ import android.view.Menu;
|
|||
import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.widget.ListView;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import de.danoeh.antennapod.AppConfig;
|
||||
import android.widget.*;
|
||||
import de.danoeh.antennapod.BuildConfig;
|
||||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.adapter.MiroGuideItemlistAdapter;
|
||||
import de.danoeh.antennapod.dialog.DownloadRequestErrorDialogCreator;
|
||||
|
@ -34,6 +26,9 @@ import de.danoeh.antennapod.storage.DBReader;
|
|||
import de.danoeh.antennapod.storage.DownloadRequestException;
|
||||
import de.danoeh.antennapod.storage.DownloadRequester;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Displays information about one channel and lets the user add this channel to
|
||||
* his library.
|
||||
|
@ -95,7 +90,7 @@ public class MiroGuideChannelViewActivity extends ActionBarActivity {
|
|||
|
||||
@Override
|
||||
protected Void doInBackground(Void... params) {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Starting background task");
|
||||
feeds = DBReader.getFeedList(MiroGuideChannelViewActivity.this);
|
||||
MiroGuideService service = new MiroGuideService();
|
||||
|
@ -111,7 +106,7 @@ public class MiroGuideChannelViewActivity extends ActionBarActivity {
|
|||
@SuppressLint("NewApi")
|
||||
@Override
|
||||
protected void onPostExecute(Void result) {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Loading finished");
|
||||
if (exception == null) {
|
||||
txtvTitle.setText(channel.getName());
|
||||
|
|
|
@ -2,7 +2,6 @@ package de.danoeh.antennapod.activity;
|
|||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.SearchManager;
|
||||
import android.app.SearchableInfo;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.AsyncTask;
|
||||
|
@ -19,8 +18,7 @@ import android.widget.AdapterView;
|
|||
import android.widget.ArrayAdapter;
|
||||
import android.widget.ListView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import de.danoeh.antennapod.AppConfig;
|
||||
import de.danoeh.antennapod.BuildConfig;
|
||||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.miroguide.conn.MiroGuideException;
|
||||
import de.danoeh.antennapod.miroguide.conn.MiroGuideService;
|
||||
|
@ -89,7 +87,7 @@ public class MiroGuideMainActivity extends ActionBarActivity implements AdapterV
|
|||
@Override
|
||||
protected void onPostExecute(Void result) {
|
||||
if (exception == null) {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Successfully loaded categories");
|
||||
categories = c;
|
||||
createAdapter();
|
||||
|
|
|
@ -7,10 +7,9 @@ import android.support.v4.app.FragmentTransaction;
|
|||
import android.support.v4.view.MenuItemCompat;
|
||||
import android.support.v7.app.ActionBarActivity;
|
||||
import android.util.Log;
|
||||
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import de.danoeh.antennapod.AppConfig;
|
||||
import de.danoeh.antennapod.BuildConfig;
|
||||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.fragment.MiroGuideChannellistFragment;
|
||||
import de.danoeh.antennapod.preferences.UserPreferences;
|
||||
|
@ -47,7 +46,7 @@ public class MiroGuideSearchActivity extends ActionBarActivity {
|
|||
}
|
||||
|
||||
private void handleSearchRequest(String query) {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Performing search");
|
||||
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
|
||||
listFragment = MiroGuideChannellistFragment.newInstance("name", query,
|
||||
|
|
|
@ -1,18 +1,21 @@
|
|||
package de.danoeh.antennapod.activity;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.DialogInterface.OnCancelListener;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.ActionBarActivity;
|
||||
import android.util.Log;
|
||||
import android.view.Gravity;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.RelativeLayout;
|
||||
import de.danoeh.antennapod.AppConfig;
|
||||
import de.danoeh.antennapod.BuildConfig;
|
||||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.dialog.AuthenticationDialog;
|
||||
import de.danoeh.antennapod.feed.Feed;
|
||||
import de.danoeh.antennapod.feed.FeedPreferences;
|
||||
import de.danoeh.antennapod.preferences.UserPreferences;
|
||||
import de.danoeh.antennapod.service.download.DownloadRequest;
|
||||
import de.danoeh.antennapod.service.download.DownloadStatus;
|
||||
|
@ -52,9 +55,9 @@ public abstract class OnlineFeedViewActivity extends ActionBarActivity {
|
|||
private Downloader downloader;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle arg0) {
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
setTheme(UserPreferences.getTheme());
|
||||
super.onCreate(arg0);
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
if (getIntent() != null && getIntent().hasExtra(ARG_TITLE)) {
|
||||
getSupportActionBar().setTitle(getIntent().getStringExtra(ARG_TITLE));
|
||||
|
@ -66,10 +69,23 @@ public abstract class OnlineFeedViewActivity extends ActionBarActivity {
|
|||
throw new IllegalArgumentException(
|
||||
"Activity must be started with feedurl argument!");
|
||||
}
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Activity was started with url " + feedUrl);
|
||||
setLoadingLayout();
|
||||
startFeedDownload(feedUrl);
|
||||
if (savedInstanceState == null) {
|
||||
startFeedDownload(feedUrl, null, null);
|
||||
} else {
|
||||
startFeedDownload(feedUrl, savedInstanceState.getString("username"), savedInstanceState.getString("password"));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onSaveInstanceState(Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
if (feed != null && feed.getPreferences() != null) {
|
||||
outState.putString("username", feed.getPreferences().getUsername());
|
||||
outState.putString("password", feed.getPreferences().getPassword());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -86,12 +102,16 @@ public abstract class OnlineFeedViewActivity extends ActionBarActivity {
|
|||
|
||||
@Override
|
||||
public void run() {
|
||||
if (AppConfig.DEBUG) Log.d(TAG, "Download was completed");
|
||||
if (BuildConfig.DEBUG) Log.d(TAG, "Download was completed");
|
||||
DownloadStatus status = downloader.getResult();
|
||||
if (status != null) {
|
||||
if (!status.isCancelled()) {
|
||||
if (status.isSuccessful()) {
|
||||
parseFeed();
|
||||
} else if (status.getReason() == DownloadError.ERROR_UNAUTHORIZED) {
|
||||
Dialog dialog = new FeedViewAuthenticationDialog(OnlineFeedViewActivity.this,
|
||||
R.string.authentication_notification_title, downloader.getDownloadRequest().getSource());
|
||||
dialog.show();
|
||||
} else {
|
||||
String errorMsg = status.getReason().getErrorString(
|
||||
OnlineFeedViewActivity.this);
|
||||
|
@ -113,17 +133,20 @@ public abstract class OnlineFeedViewActivity extends ActionBarActivity {
|
|||
|
||||
}
|
||||
|
||||
private void startFeedDownload(String url) {
|
||||
if (AppConfig.DEBUG)
|
||||
private void startFeedDownload(String url, String username, String password) {
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Starting feed download");
|
||||
url = URLChecker.prepareURL(url);
|
||||
feed = new Feed(url, new Date());
|
||||
if (username != null && password != null) {
|
||||
feed.setPreferences(new FeedPreferences(0, true, username, password));
|
||||
}
|
||||
String fileUrl = new File(getExternalCacheDir(),
|
||||
FileNameGenerator.generateFileName(feed.getDownload_url()))
|
||||
.toString();
|
||||
feed.setFile_url(fileUrl);
|
||||
final DownloadRequest request = new DownloadRequest(feed.getFile_url(),
|
||||
feed.getDownload_url(), "OnlineFeed", 0, Feed.FEEDFILETYPE_FEED);
|
||||
feed.getDownload_url(), "OnlineFeed", 0, Feed.FEEDFILETYPE_FEED, username, password);
|
||||
downloader = new HttpDownloader(
|
||||
request);
|
||||
new Thread() {
|
||||
|
@ -163,7 +186,7 @@ public abstract class OnlineFeedViewActivity extends ActionBarActivity {
|
|||
"feed must be non-null and downloaded when parseFeed is called");
|
||||
}
|
||||
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Parsing feed");
|
||||
|
||||
Thread thread = new Thread() {
|
||||
|
@ -190,7 +213,7 @@ public abstract class OnlineFeedViewActivity extends ActionBarActivity {
|
|||
reasonDetailed = e.getMessage();
|
||||
} finally {
|
||||
boolean rc = new File(feed.getFile_url()).delete();
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Deleted feed source file. Result: " + rc);
|
||||
}
|
||||
|
||||
|
@ -259,4 +282,25 @@ public abstract class OnlineFeedViewActivity extends ActionBarActivity {
|
|||
builder.show();
|
||||
}
|
||||
|
||||
private class FeedViewAuthenticationDialog extends AuthenticationDialog {
|
||||
|
||||
private String feedUrl;
|
||||
|
||||
public FeedViewAuthenticationDialog(Context context, int titleRes, String feedUrl) {
|
||||
super(context, titleRes, true, false, null, null);
|
||||
this.feedUrl = feedUrl;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCancelled() {
|
||||
super.onCancelled();
|
||||
finish();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onConfirmed(String username, String password, boolean saveUsernamePassword) {
|
||||
startFeedDownload(feedUrl, username, password);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,8 +1,5 @@
|
|||
package de.danoeh.antennapod.activity;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.view.MenuItemCompat;
|
||||
|
@ -15,11 +12,13 @@ import android.view.View.OnClickListener;
|
|||
import android.widget.ArrayAdapter;
|
||||
import android.widget.Button;
|
||||
import android.widget.ListView;
|
||||
|
||||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.opml.OpmlElement;
|
||||
import de.danoeh.antennapod.preferences.UserPreferences;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Displays the feeds that the OPML-Importer has read and lets the user choose
|
||||
* which feeds he wants to import.
|
||||
|
|
|
@ -1,17 +1,16 @@
|
|||
package de.danoeh.antennapod.activity;
|
||||
|
||||
import java.io.Reader;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.support.v7.app.ActionBarActivity;
|
||||
import android.util.Log;
|
||||
|
||||
import de.danoeh.antennapod.AppConfig;
|
||||
import de.danoeh.antennapod.BuildConfig;
|
||||
import de.danoeh.antennapod.asynctask.OpmlFeedQueuer;
|
||||
import de.danoeh.antennapod.asynctask.OpmlImportWorker;
|
||||
import de.danoeh.antennapod.opml.OpmlElement;
|
||||
|
||||
import java.io.Reader;
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* Base activity for Opml Import - e.g. with code what to do afterwards
|
||||
* */
|
||||
|
@ -26,10 +25,10 @@ public class OpmlImportBaseActivity extends ActionBarActivity {
|
|||
*/
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Received result");
|
||||
if (resultCode == RESULT_CANCELED) {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Activity was cancelled");
|
||||
if (finishWhenCanceled())
|
||||
finish();
|
||||
|
@ -51,7 +50,7 @@ public class OpmlImportBaseActivity extends ActionBarActivity {
|
|||
};
|
||||
queuer.executeAsync();
|
||||
} else {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "No items were selected");
|
||||
}
|
||||
}
|
||||
|
@ -67,14 +66,14 @@ public class OpmlImportBaseActivity extends ActionBarActivity {
|
|||
protected void onPostExecute(ArrayList<OpmlElement> result) {
|
||||
super.onPostExecute(result);
|
||||
if (result != null) {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Parsing was successful");
|
||||
OpmlImportHolder.setReadElements(result);
|
||||
startActivityForResult(new Intent(
|
||||
OpmlImportBaseActivity.this,
|
||||
OpmlFeedChooserActivity.class), 0);
|
||||
} else {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Parser error occurred");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
package de.danoeh.antennapod.activity;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.URL;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.os.Bundle;
|
||||
import de.danoeh.antennapod.preferences.UserPreferences;
|
||||
import de.danoeh.antennapod.util.LangUtils;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.URL;
|
||||
|
||||
/** Lets the user start the OPML-import process. */
|
||||
public class OpmlImportFromIntentActivity extends OpmlImportBaseActivity {
|
||||
|
||||
|
|
|
@ -1,12 +1,5 @@
|
|||
package de.danoeh.antennapod.activity;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.IOException;
|
||||
import java.io.Reader;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.content.DialogInterface;
|
||||
import android.os.Bundle;
|
||||
|
@ -18,13 +11,14 @@ import android.view.View.OnClickListener;
|
|||
import android.widget.Button;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import de.danoeh.antennapod.AppConfig;
|
||||
import de.danoeh.antennapod.BuildConfig;
|
||||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.preferences.UserPreferences;
|
||||
import de.danoeh.antennapod.util.LangUtils;
|
||||
import de.danoeh.antennapod.util.StorageUtils;
|
||||
|
||||
import java.io.*;
|
||||
|
||||
/**
|
||||
* Lets the user start the OPML-import process from a path
|
||||
*/
|
||||
|
@ -70,7 +64,7 @@ public class OpmlImportFromPathActivity extends OpmlImportBaseActivity {
|
|||
File importDir = UserPreferences.getDataFolder(this, IMPORT_DIR);
|
||||
boolean success = true;
|
||||
if (!importDir.exists()) {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Import directory doesn't exist. Creating...");
|
||||
success = importDir.mkdir();
|
||||
if (!success) {
|
||||
|
@ -112,7 +106,7 @@ public class OpmlImportFromPathActivity extends OpmlImportBaseActivity {
|
|||
if (dir.isDirectory()) {
|
||||
File[] fileList = dir.listFiles();
|
||||
if (fileList.length == 1) {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Found one file, choosing that one.");
|
||||
startImport(fileList[0]);
|
||||
} else if (fileList.length > 1) {
|
||||
|
@ -133,7 +127,7 @@ public class OpmlImportFromPathActivity extends OpmlImportBaseActivity {
|
|||
try {
|
||||
mReader = new InputStreamReader(new FileInputStream(file),
|
||||
LangUtils.UTF_8);
|
||||
if (AppConfig.DEBUG) Log.d(TAG, "Parsing " + file.toString());
|
||||
if (BuildConfig.DEBUG) Log.d(TAG, "Parsing " + file.toString());
|
||||
startImport(mReader);
|
||||
} catch (FileNotFoundException e) {
|
||||
Log.d(TAG, "File not found which really should be there");
|
||||
|
@ -156,7 +150,7 @@ public class OpmlImportFromPathActivity extends OpmlImportBaseActivity {
|
|||
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Dialog was cancelled");
|
||||
dialog.dismiss();
|
||||
}
|
||||
|
@ -165,7 +159,7 @@ public class OpmlImportFromPathActivity extends OpmlImportBaseActivity {
|
|||
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "File at index " + which + " was chosen");
|
||||
dialog.dismiss();
|
||||
startImport(fileList[which]);
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
package de.danoeh.antennapod.activity;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import de.danoeh.antennapod.opml.OpmlElement;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* Hold infos gathered by Ompl-Import
|
||||
* <p/>
|
||||
|
|
|
@ -5,18 +5,13 @@ import android.os.AsyncTask;
|
|||
import android.os.Bundle;
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.support.v4.app.NavUtils;
|
||||
import android.support.v7.app.ActionBarActivity;
|
||||
import android.view.*;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.*;
|
||||
import android.widget.BaseAdapter;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.mobeta.android.dslv.DragSortListView;
|
||||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.asynctask.ImageLoader;
|
||||
|
|
|
@ -1,16 +1,13 @@
|
|||
package de.danoeh.antennapod.activity;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.FragmentTransaction;
|
||||
import android.support.v4.app.NavUtils;
|
||||
import android.support.v4.view.MenuItemCompat;
|
||||
import android.support.v7.app.ActionBarActivity;
|
||||
import android.util.Log;
|
||||
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import de.danoeh.antennapod.AppConfig;
|
||||
import de.danoeh.antennapod.BuildConfig;
|
||||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.fragment.PlaybackHistoryFragment;
|
||||
import de.danoeh.antennapod.preferences.UserPreferences;
|
||||
|
@ -46,7 +43,7 @@ public class PlaybackHistoryActivity extends ActionBarActivity {
|
|||
setTheme(UserPreferences.getTheme());
|
||||
super.onCreate(arg0);
|
||||
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Activity created");
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
setContentView(R.layout.playbackhistory_activity);
|
||||
|
|
|
@ -19,7 +19,7 @@ import android.util.Log;
|
|||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.widget.Toast;
|
||||
import de.danoeh.antennapod.AppConfig;
|
||||
import de.danoeh.antennapod.BuildConfig;
|
||||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.asynctask.FlattrClickWorker;
|
||||
import de.danoeh.antennapod.asynctask.OpmlExportWorker;
|
||||
|
@ -362,7 +362,7 @@ public class PreferenceActivity extends android.preference.PreferenceActivity {
|
|||
if (resultCode == DirectoryChooserActivity.RESULT_CODE_DIR_SELECTED) {
|
||||
String dir = data
|
||||
.getStringExtra(DirectoryChooserActivity.RESULT_SELECTED_DIR);
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Setting data folder");
|
||||
UserPreferences.setDataFolder(dir);
|
||||
}
|
||||
|
@ -392,7 +392,7 @@ public class PreferenceActivity extends android.preference.PreferenceActivity {
|
|||
.getAutodownloadSelectedNetworks()));
|
||||
boolean newValue = ((CheckBoxPreference) preference)
|
||||
.isChecked();
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Selected network " + key
|
||||
+ ". New state: " + newValue);
|
||||
|
||||
|
|
|
@ -1,8 +1,5 @@
|
|||
package de.danoeh.antennapod.activity;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.app.SearchManager;
|
||||
|
@ -17,17 +14,19 @@ import android.view.View;
|
|||
import android.widget.AdapterView;
|
||||
import android.widget.ListView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import de.danoeh.antennapod.AppConfig;
|
||||
import de.danoeh.antennapod.BuildConfig;
|
||||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.adapter.SearchlistAdapter;
|
||||
import de.danoeh.antennapod.feed.Feed;
|
||||
import de.danoeh.antennapod.feed.FeedItem;
|
||||
import de.danoeh.antennapod.storage.FeedSearcher;
|
||||
import de.danoeh.antennapod.feed.SearchResult;
|
||||
import de.danoeh.antennapod.fragment.FeedlistFragment;
|
||||
import de.danoeh.antennapod.fragment.ItemlistFragment;
|
||||
import de.danoeh.antennapod.preferences.UserPreferences;
|
||||
import de.danoeh.antennapod.storage.FeedSearcher;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Displays the results when the user searches for FeedItems or Feeds.
|
||||
|
@ -75,11 +74,11 @@ public class SearchActivity extends ActionBarActivity implements AdapterView.OnI
|
|||
Intent intent = getIntent();
|
||||
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
|
||||
if (intent.hasExtra(SearchActivity.EXTRA_FEED_ID)) {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Found bundle extra");
|
||||
feedID = intent.getLongExtra(SearchActivity.EXTRA_FEED_ID, 0);
|
||||
}
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Starting search");
|
||||
String query = intent.getStringExtra(SearchManager.QUERY);
|
||||
getSupportActionBar()
|
||||
|
@ -149,9 +148,9 @@ public class SearchActivity extends ActionBarActivity implements AdapterView.OnI
|
|||
|
||||
@Override
|
||||
public void run() {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Background work finished");
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Found " + result.size()
|
||||
+ " results");
|
||||
|
||||
|
|
|
@ -7,8 +7,7 @@ import android.content.IntentFilter;
|
|||
import android.os.Bundle;
|
||||
import android.support.v7.app.ActionBarActivity;
|
||||
import android.util.Log;
|
||||
|
||||
import de.danoeh.antennapod.AppConfig;
|
||||
import de.danoeh.antennapod.BuildConfig;
|
||||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.preferences.UserPreferences;
|
||||
import de.danoeh.antennapod.util.StorageUtils;
|
||||
|
@ -57,11 +56,11 @@ public class StorageErrorActivity extends ActionBarActivity {
|
|||
public void onReceive(Context context, Intent intent) {
|
||||
if (intent.getAction().equals(Intent.ACTION_MEDIA_MOUNTED)) {
|
||||
if (intent.getBooleanExtra("read-only", true)) {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Media was mounted; Finishing activity");
|
||||
leaveErrorState();
|
||||
} else {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG,
|
||||
"Media seemed to have been mounted read only");
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ import android.view.animation.AnimationUtils;
|
|||
import android.widget.LinearLayout;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.SeekBar;
|
||||
import de.danoeh.antennapod.AppConfig;
|
||||
import de.danoeh.antennapod.BuildConfig;
|
||||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.feed.MediaType;
|
||||
import de.danoeh.antennapod.service.playback.PlaybackService;
|
||||
|
@ -72,7 +72,7 @@ public class VideoplayerActivity extends MediaplayerActivity {
|
|||
if (getIntent().getAction() != null
|
||||
&& getIntent().getAction().equals(Intent.ACTION_VIEW)) {
|
||||
Intent intent = getIntent();
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Received VIEW intent: "
|
||||
+ intent.getData().getPath());
|
||||
ExternalMedia media = new ExternalMedia(intent.getData().getPath(),
|
||||
|
@ -120,13 +120,13 @@ public class VideoplayerActivity extends MediaplayerActivity {
|
|||
@Override
|
||||
protected void onAwaitingVideoSurface() {
|
||||
if (videoSurfaceCreated) {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG,
|
||||
"Videosurface already created, setting videosurface now");
|
||||
|
||||
Pair<Integer, Integer> videoSize = controller.getVideoSize();
|
||||
if (videoSize != null && videoSize.first > 0 && videoSize.second > 0) {
|
||||
if (AppConfig.DEBUG) Log.d(TAG, "Width,height of video: " + videoSize.first + ", " + videoSize.second);
|
||||
if (BuildConfig.DEBUG) Log.d(TAG, "Width,height of video: " + videoSize.first + ", " + videoSize.second);
|
||||
videoview.setVideoSize(videoSize.first, videoSize.second);
|
||||
} else {
|
||||
Log.e(TAG, "Could not determine video size");
|
||||
|
@ -215,7 +215,7 @@ public class VideoplayerActivity extends MediaplayerActivity {
|
|||
@Override
|
||||
protected void onProgressUpdate(Void... values) {
|
||||
if (videoControlsShowing) {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Hiding video controls");
|
||||
getSupportActionBar().hide();
|
||||
hideVideoControls();
|
||||
|
@ -245,7 +245,7 @@ public class VideoplayerActivity extends MediaplayerActivity {
|
|||
|
||||
@Override
|
||||
public void surfaceCreated(SurfaceHolder holder) {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Videoview holder created");
|
||||
videoSurfaceCreated = true;
|
||||
if (controller.getStatus() == PlayerStatus.PLAYING) {
|
||||
|
@ -261,7 +261,7 @@ public class VideoplayerActivity extends MediaplayerActivity {
|
|||
|
||||
@Override
|
||||
public void surfaceDestroyed(SurfaceHolder holder) {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG, "Videosurface was destroyed");
|
||||
videoSurfaceCreated = false;
|
||||
controller.notifyVideoSurfaceAbandoned();
|
||||
|
@ -272,7 +272,7 @@ public class VideoplayerActivity extends MediaplayerActivity {
|
|||
@Override
|
||||
protected void onReloadNotification(int notificationCode) {
|
||||
if (notificationCode == PlaybackService.EXTRA_CODE_AUDIO) {
|
||||
if (AppConfig.DEBUG)
|
||||
if (BuildConfig.DEBUG)
|
||||
Log.d(TAG,
|
||||
"ReloadNotification received, switching to Audioplayer now");
|
||||
finish();
|
||||
|
@ -337,4 +337,14 @@ public class VideoplayerActivity extends MediaplayerActivity {
|
|||
return R.layout.videoplayer_activity;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void setScreenOn(boolean enable) {
|
||||
super.setScreenOn(enable);
|
||||
if (enable) {
|
||||
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
||||
} else {
|
||||
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@ import android.view.LayoutInflater;
|
|||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.widget.*;
|
||||
import de.danoeh.antennapod.AppConfig;
|
||||
import de.danoeh.antennapod.BuildConfig;
|
||||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.activity.MainActivity;
|
||||
import de.danoeh.antennapod.gpoddernet.GpodnetService;
|
||||
|
@ -113,7 +113,7 @@ public class GpodnetAuthenticationActivity extends ActionBarActivity {
|
|||
final String usernameStr = username.getText().toString();
|
||||
final String passwordStr = password.getText().toString();
|
||||
|
||||
if (AppConfig.DEBUG) Log.d(TAG, "Checking login credentials");
|
||||
if (BuildConfig.DEBUG) Log.d(TAG, "Checking login credentials");
|
||||
new AsyncTask<GpodnetService, Void, Void>() {
|
||||
|
||||
volatile Exception exception;
|
||||
|
@ -333,7 +333,7 @@ public class GpodnetAuthenticationActivity extends ActionBarActivity {
|
|||
}
|
||||
|
||||
private void writeLoginCredentials() {
|
||||
if (AppConfig.DEBUG) Log.d(TAG, "Writing login credentials");
|
||||
if (BuildConfig.DEBUG) Log.d(TAG, "Writing login credentials");
|
||||
GpodnetPreferences.setUsername(username);
|
||||
GpodnetPreferences.setPassword(password);
|
||||
GpodnetPreferences.setDeviceID(selectedDevice.getId());
|
||||
|
|
|
@ -11,7 +11,6 @@ import de.danoeh.antennapod.R;
|
|||
import de.danoeh.antennapod.fragment.gpodnet.PodcastTopListFragment;
|
||||
import de.danoeh.antennapod.fragment.gpodnet.SuggestionListFragment;
|
||||
import de.danoeh.antennapod.fragment.gpodnet.TagListFragment;
|
||||
import de.danoeh.antennapod.preferences.GpodnetPreferences;
|
||||
|
||||
/**
|
||||
* Created by daniel on 22.08.13.
|
||||
|
|
|
@ -7,7 +7,6 @@ import android.support.v4.app.NavUtils;
|
|||
import android.view.MenuItem;
|
||||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.fragment.gpodnet.PodcastListFragment;
|
||||
import de.danoeh.antennapod.fragment.gpodnet.SearchListFragment;
|
||||
import de.danoeh.antennapod.gpoddernet.GpodnetService;
|
||||
import de.danoeh.antennapod.gpoddernet.GpodnetServiceException;
|
||||
import de.danoeh.antennapod.gpoddernet.model.GpodnetPodcast;
|
||||
|
|
|
@ -1,13 +1,10 @@
|
|||
package de.danoeh.antennapod.adapter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import android.content.Context;
|
||||
import android.text.Layout;
|
||||
import android.text.Selection;
|
||||
import android.text.Spannable;
|
||||
import android.text.Spanned;
|
||||
import android.text.method.LinkMovementMethod;
|
||||
import android.text.style.ClickableSpan;
|
||||
import android.text.util.Linkify;
|
||||
import android.util.Log;
|
||||
|
@ -24,6 +21,8 @@ import de.danoeh.antennapod.util.ChapterUtils;
|
|||
import de.danoeh.antennapod.util.Converter;
|
||||
import de.danoeh.antennapod.util.playback.Playable;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class ChapterListAdapter extends ArrayAdapter<Chapter> {
|
||||
|
||||
private static final String TAG = "ChapterListAdapter";
|
||||
|
|
|
@ -12,7 +12,6 @@ import de.danoeh.antennapod.feed.Feed;
|
|||
import de.danoeh.antennapod.feed.FeedImage;
|
||||
import de.danoeh.antennapod.feed.FeedMedia;
|
||||
import de.danoeh.antennapod.service.download.DownloadStatus;
|
||||
import de.danoeh.antennapod.util.DownloadError;
|
||||
|
||||
/** Displays a list of DownloadStatus entries. */
|
||||
public class DownloadLogAdapter extends BaseAdapter {
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
package de.danoeh.antennapod.adapter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
|
@ -10,16 +8,14 @@ import android.widget.ArrayAdapter;
|
|||
import android.widget.ProgressBar;
|
||||
import android.widget.TextView;
|
||||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.feed.Feed;
|
||||
import de.danoeh.antennapod.feed.FeedFile;
|
||||
import de.danoeh.antennapod.feed.FeedImage;
|
||||
import de.danoeh.antennapod.feed.FeedMedia;
|
||||
import de.danoeh.antennapod.service.download.DownloadRequest;
|
||||
import de.danoeh.antennapod.service.download.DownloadStatus;
|
||||
import de.danoeh.antennapod.service.download.Downloader;
|
||||
import de.danoeh.antennapod.util.Converter;
|
||||
import de.danoeh.antennapod.util.ThemeUtils;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class DownloadlistAdapter extends ArrayAdapter<Downloader> {
|
||||
private int selectedItemIndex;
|
||||
|
||||
|
|
|
@ -6,11 +6,7 @@ import android.view.LayoutInflater;
|
|||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.BaseExpandableListAdapter;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.TextView;
|
||||
import android.widget.*;
|
||||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.asynctask.ImageLoader;
|
||||
import de.danoeh.antennapod.feed.FeedItem;
|
||||
|
|
|
@ -7,11 +7,7 @@ import android.view.LayoutInflater;
|
|||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Adapter;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.TextView;
|
||||
import android.widget.*;
|
||||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.feed.FeedItem;
|
||||
import de.danoeh.antennapod.feed.FeedMedia;
|
||||
|
@ -20,8 +16,6 @@ import de.danoeh.antennapod.storage.DownloadRequester;
|
|||
import de.danoeh.antennapod.util.Converter;
|
||||
import de.danoeh.antennapod.util.ThemeUtils;
|
||||
|
||||
import java.util.Iterator;
|
||||
|
||||
/** List adapter for items of feeds that the user has already subscribed to. */
|
||||
public class InternalFeedItemlistAdapter extends DefaultFeedItemlistAdapter {
|
||||
|
||||
|
|