Loading _docs/index.html +16 −0 Original line number Diff line number Diff line Loading @@ -214,6 +214,22 @@ save resultant photos and videos to your device.</p> <p>Bluetooth permission is required for communicating with some supported Bluetooth remote control devices.</p> <p>Since Open Camera also uses operating system APIs, you should review relevant privacy policies such as for your device, manufacturer, operating system and/or Google accounts. For example:</p> <ul> <li>The optional voice control option uses Android's <a href="https://developer.android.com/reference/android/speech/SpeechRecognizer">speech recognition service</a>. When enabled, audio data is likely to be sent to remote servers by Android to perform speech recognition. </li> <li>The "addresses" option for photo stamp or video subtitles uses Android's <a href="https://developer.android.com/reference/android/location/Geocoder">Geocoder API</a>, which requires your device transmits location data across the Internet to a third party (which may depend on what "backend services" are installed on your device). </li> <li>Apps/services such as cloud services on your device may auto-upload photos and videos that are saved on your device. </li> </ul> <!-- from https://support.google.com/adsense/answer/1348695?hl=en-GB , for adsense --> <p>Although Open Camera is ad-free, this website has ads via Google Adsense: Third party vendors, including Google, use cookies to serve ads based on a user's previous visits to this website or other websites. Google's use of advertising cookies enables it and Loading app/src/main/java/net/sourceforge/opencamera/MyPreferenceFragment.java +37 −3 Original line number Diff line number Diff line Loading @@ -795,9 +795,8 @@ public class MyPreferenceFragment extends PreferenceFragment implements OnShared if( pref.getKey().equals("preference_privacy_policy") ) { if( MyDebug.LOG ) Log.d(TAG, "user clicked privacy policy"); MainActivity main_activity = (MainActivity)MyPreferenceFragment.this.getActivity(); main_activity.launchOnlinePrivacyPolicy(); return false; clickedPrivacyPolicy(); } return false; } Loading Loading @@ -1536,6 +1535,41 @@ public class MyPreferenceFragment extends PreferenceFragment implements OnShared } } /* The user clicked the privacy policy preference. */ public void clickedPrivacyPolicy() { if( MyDebug.LOG ) Log.d(TAG, "clickedPrivacyPolicy()"); /*MainActivity main_activity = (MainActivity)MyPreferenceFragment.this.getActivity(); main_activity.launchOnlinePrivacyPolicy();*/ AlertDialog.Builder alertDialog = new AlertDialog.Builder(MyPreferenceFragment.this.getActivity()); alertDialog.setTitle(R.string.preference_privacy_policy); alertDialog.setMessage(R.string.preference_privacy_policy_text); alertDialog.setPositiveButton(android.R.string.ok, null); alertDialog.setNegativeButton(R.string.preference_privacy_policy_online, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { if( MyDebug.LOG ) Log.d(TAG, "online privacy policy"); MainActivity main_activity = (MainActivity)MyPreferenceFragment.this.getActivity(); main_activity.launchOnlinePrivacyPolicy(); } }); final AlertDialog alert = alertDialog.create(); // AlertDialog.Builder.setOnDismissListener() requires API level 17, so do it this way instead alert.setOnDismissListener(new DialogInterface.OnDismissListener() { @Override public void onDismiss(DialogInterface arg0) { if( MyDebug.LOG ) Log.d(TAG, "reset dialog dismissed"); dialogs.remove(alert); } }); alert.show(); dialogs.add(alert); } /* Displays a dialog with text loaded from a file in assets. */ private void displayTextDialog(int title_id, String file) { Loading app/src/main/res/values/strings.xml +13 −4 Original line number Diff line number Diff line Loading @@ -906,12 +906,21 @@ <!-- The following strings should not be translated (in case they need updating) --> <string name="preference_privacy_policy">Privacy policy</string> <string name="preference_privacy_policy_text"> <!-- shouldn't be translated (in case it needs updating) --> <string name="preference_privacy_policy_summary">Tap to display privacy policy</string> <string name="preference_privacy_policy_online">Online privacy policy</string> <string name="preference_privacy_policy_text"> <!-- if changing this, remember to consider if the online privacy policy needs updating --> Open Camera accesses camera sensor and microphone data to fulfil its purpose as a camera. Microphone is also used for the optional \"Audio control\". Access to files is needed to save resultant photos and videos to your device. Location permission is required for the optional geotagging/stamp/subtitles and Bluetooth features. Please tap here to open the online privacy policy in your browser. \nAccess to files is needed to save resultant photos and videos to your device. \nLocation permission is required for the optional geotagging/stamp/subtitles and Bluetooth features. \nSince Open Camera also uses operating system APIs, you should review relevant privacy policies such as for your device, manufacturer, operating system and/or Google accounts. For example: \n*The optional voice control option uses Android\'s speech recognition service. When enabled, audio data is likely to be sent to remote servers by Android to perform speech recognition. \n*The \"addresses\" option for photo stamp or video subtitles uses Android\'s Geocoder API, which requires your device transmits location data across the Internet to a third party (which may depend on what "backend services" are installed on your device). \n*Apps/services such as cloud services on your device may auto-upload photos and videos that are saved on your device. </string> <string name="speech_recognizer_extra_info"> Loading app/src/main/res/xml/preferences.xml +1 −1 Original line number Diff line number Diff line Loading @@ -1233,7 +1233,7 @@ <Preference android:key="preference_privacy_policy" android:title="@string/preference_privacy_policy" android:summary="@string/preference_privacy_policy_text" android:summary="@string/preference_privacy_policy_summary" android:icon="@drawable/ic_info_outline_white_48dp" /> Loading Loading
_docs/index.html +16 −0 Original line number Diff line number Diff line Loading @@ -214,6 +214,22 @@ save resultant photos and videos to your device.</p> <p>Bluetooth permission is required for communicating with some supported Bluetooth remote control devices.</p> <p>Since Open Camera also uses operating system APIs, you should review relevant privacy policies such as for your device, manufacturer, operating system and/or Google accounts. For example:</p> <ul> <li>The optional voice control option uses Android's <a href="https://developer.android.com/reference/android/speech/SpeechRecognizer">speech recognition service</a>. When enabled, audio data is likely to be sent to remote servers by Android to perform speech recognition. </li> <li>The "addresses" option for photo stamp or video subtitles uses Android's <a href="https://developer.android.com/reference/android/location/Geocoder">Geocoder API</a>, which requires your device transmits location data across the Internet to a third party (which may depend on what "backend services" are installed on your device). </li> <li>Apps/services such as cloud services on your device may auto-upload photos and videos that are saved on your device. </li> </ul> <!-- from https://support.google.com/adsense/answer/1348695?hl=en-GB , for adsense --> <p>Although Open Camera is ad-free, this website has ads via Google Adsense: Third party vendors, including Google, use cookies to serve ads based on a user's previous visits to this website or other websites. Google's use of advertising cookies enables it and Loading
app/src/main/java/net/sourceforge/opencamera/MyPreferenceFragment.java +37 −3 Original line number Diff line number Diff line Loading @@ -795,9 +795,8 @@ public class MyPreferenceFragment extends PreferenceFragment implements OnShared if( pref.getKey().equals("preference_privacy_policy") ) { if( MyDebug.LOG ) Log.d(TAG, "user clicked privacy policy"); MainActivity main_activity = (MainActivity)MyPreferenceFragment.this.getActivity(); main_activity.launchOnlinePrivacyPolicy(); return false; clickedPrivacyPolicy(); } return false; } Loading Loading @@ -1536,6 +1535,41 @@ public class MyPreferenceFragment extends PreferenceFragment implements OnShared } } /* The user clicked the privacy policy preference. */ public void clickedPrivacyPolicy() { if( MyDebug.LOG ) Log.d(TAG, "clickedPrivacyPolicy()"); /*MainActivity main_activity = (MainActivity)MyPreferenceFragment.this.getActivity(); main_activity.launchOnlinePrivacyPolicy();*/ AlertDialog.Builder alertDialog = new AlertDialog.Builder(MyPreferenceFragment.this.getActivity()); alertDialog.setTitle(R.string.preference_privacy_policy); alertDialog.setMessage(R.string.preference_privacy_policy_text); alertDialog.setPositiveButton(android.R.string.ok, null); alertDialog.setNegativeButton(R.string.preference_privacy_policy_online, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { if( MyDebug.LOG ) Log.d(TAG, "online privacy policy"); MainActivity main_activity = (MainActivity)MyPreferenceFragment.this.getActivity(); main_activity.launchOnlinePrivacyPolicy(); } }); final AlertDialog alert = alertDialog.create(); // AlertDialog.Builder.setOnDismissListener() requires API level 17, so do it this way instead alert.setOnDismissListener(new DialogInterface.OnDismissListener() { @Override public void onDismiss(DialogInterface arg0) { if( MyDebug.LOG ) Log.d(TAG, "reset dialog dismissed"); dialogs.remove(alert); } }); alert.show(); dialogs.add(alert); } /* Displays a dialog with text loaded from a file in assets. */ private void displayTextDialog(int title_id, String file) { Loading
app/src/main/res/values/strings.xml +13 −4 Original line number Diff line number Diff line Loading @@ -906,12 +906,21 @@ <!-- The following strings should not be translated (in case they need updating) --> <string name="preference_privacy_policy">Privacy policy</string> <string name="preference_privacy_policy_text"> <!-- shouldn't be translated (in case it needs updating) --> <string name="preference_privacy_policy_summary">Tap to display privacy policy</string> <string name="preference_privacy_policy_online">Online privacy policy</string> <string name="preference_privacy_policy_text"> <!-- if changing this, remember to consider if the online privacy policy needs updating --> Open Camera accesses camera sensor and microphone data to fulfil its purpose as a camera. Microphone is also used for the optional \"Audio control\". Access to files is needed to save resultant photos and videos to your device. Location permission is required for the optional geotagging/stamp/subtitles and Bluetooth features. Please tap here to open the online privacy policy in your browser. \nAccess to files is needed to save resultant photos and videos to your device. \nLocation permission is required for the optional geotagging/stamp/subtitles and Bluetooth features. \nSince Open Camera also uses operating system APIs, you should review relevant privacy policies such as for your device, manufacturer, operating system and/or Google accounts. For example: \n*The optional voice control option uses Android\'s speech recognition service. When enabled, audio data is likely to be sent to remote servers by Android to perform speech recognition. \n*The \"addresses\" option for photo stamp or video subtitles uses Android\'s Geocoder API, which requires your device transmits location data across the Internet to a third party (which may depend on what "backend services" are installed on your device). \n*Apps/services such as cloud services on your device may auto-upload photos and videos that are saved on your device. </string> <string name="speech_recognizer_extra_info"> Loading
app/src/main/res/xml/preferences.xml +1 −1 Original line number Diff line number Diff line Loading @@ -1233,7 +1233,7 @@ <Preference android:key="preference_privacy_policy" android:title="@string/preference_privacy_policy" android:summary="@string/preference_privacy_policy_text" android:summary="@string/preference_privacy_policy_summary" android:icon="@drawable/ic_info_outline_white_48dp" /> Loading