Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 348aee89 authored by Mark Harman's avatar Mark Harman
Browse files

Make privacy policy a dialog; add info about OS APIs.

parent cb2553e4
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -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
+37 −3
Original line number Diff line number Diff line
@@ -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;
                }
@@ -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) {
+13 −4
Original line number Diff line number Diff line
@@ -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">
+1 −1
Original line number Diff line number Diff line
@@ -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"
            />