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

Commit 53ed0a23 authored by Mark Harman's avatar Mark Harman
Browse files

Privacy policy updates.

parent 12ceca7a
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -1470,6 +1470,8 @@ can paste the information into your web browser, email or whatever.</p>
<a href="http://sourceforge.net/p/opencamera/discussion/">forums</a>.
For some enquiries you may prefer to use email.
Please contact me at <a href="mailto:mark.harman.apps@gmail.com?subject=Open%20Camera">mark.harman.apps@gmail.com</a>.
    <!-- if I change my email, remember also to update the contact for privacy policy
        in privacy_oc.html , as well as email address contact for in-app privacy policy -->
Please note that I get a <i>lot</i> of emails
for Open Camera these days - I try to reply as many as I can, but this is not always feasible. I do however
read every email and forum post.</p>
+14 −3
Original line number Diff line number Diff line
@@ -50,17 +50,28 @@
<!-- also linked from the cookie popup, other pages on this site, and Google Play store listing -->
<!-- if changing this, remember to consider if the in-application privacy policy needs updating -->

<p>Open Camera is developed by Mark Harman. If you have inquiries about my privacy policy,
    please contact by email me at
    <a href="mailto:mark.harman.apps@gmail.com?subject=Open%20Camera%20privacy%20policy">mark.harman.apps@gmail.com</a>.</p>

<p>Open Camera accesses and records camera sensor and microphone data, which is used for the purpose
of taking photos and recording videos, to fulfil its purpose as a camera. Microphone permission is also used for the optional "Audio control" options.</p>

<p>Open Camera requires permission (at least for Android 9 and earlier, or using versions of Open Camera older than 1.48.3) to
    "access photos, media and files on your devices" (storage permission), as this permission is required for Android to save resultant files such as photos and videos to your device.</p>

<p>Location permission is required for the optional geotagging features (for photos and videos, including stamp and subtitles options).
<p>Location permission is requested in order to deliver the optional geotagging features (for photos and videos, including stamp and subtitles options).
    When relevant option(s) are enabled, your device location will be stored in photo/video/subtitle files.
    Location permission is also required to connect to Bluetooth remote control devices.</p>

<p>Bluetooth permission is required for communicating with some supported Bluetooth remote control devices.</p>
<p>Location permission is also requested in order to connect to Bluetooth remote control devices.</p>

<p>Resultant data such as photos or videos can be shared with
    other apps if you use the share option in Open Camera, or when Open Camera is called by
    another app on your device.</p>

<p>Since Open Camera does not transmit personal or sensitive information to me, I do not have
    data handling procedures, data retention or deletion policies.</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>
@@ -71,7 +82,7 @@ of taking photos and recording videos, to fulfil its purpose as a camera. Microp
    </li>
    <li>The "addresses" option for photo stamp or video subtitles uses the Android
        <a href="https://developer.android.com/reference/android/location/Geocoder">Geocoder API</a>.
        When enabled, this requires that your device transmits location data across the Internet to a
        When this option is enabled, in order to deliver this functionality the API transmits your device 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.
+28 −9
Original line number Diff line number Diff line
@@ -34,8 +34,9 @@ import android.preference.PreferenceFragment;
import android.preference.PreferenceGroup;
import android.preference.PreferenceManager;
import android.preference.TwoStatePreference;
import android.text.Html;
import android.text.SpannableString;
//import android.text.Spanned;
import android.text.Spanned;
import android.text.method.LinkMovementMethod;
import android.util.DisplayMetrics;
import android.util.Log;
@@ -1438,17 +1439,11 @@ public class MyPreferenceFragment extends PreferenceFragment implements OnShared

                        // clickable text is only supported if we call setMovementMethod on the TextView - which means we need to create
                        // our own for the AlertDialog!
                        final float scale = getActivity().getResources().getDisplayMetrics().density;
                        TextView textView = new TextView(getActivity());
                        textView.setText(span);
                        textView.setMovementMethod(LinkMovementMethod.getInstance());
                        textView.setTextAppearance(getActivity(), android.R.style.TextAppearance_Medium);
                        ScrollView scrollView = new ScrollView(getActivity());
                        scrollView.addView(textView);
                        // padding values from /sdk/platforms/android-18/data/res/layout/alert_dialog.xml
                        textView.setPadding((int)(5*scale+0.5f), (int)(5*scale+0.5f), (int)(5*scale+0.5f), (int)(5*scale+0.5f));
                        scrollView.setPadding((int)(14*scale+0.5f), (int)(2*scale+0.5f), (int)(10*scale+0.5f), (int)(12*scale+0.5f));
                        alertDialog.setView(scrollView);
                        addTextViewForAlertDialog(alertDialog, textView);
                        //alertDialog.setMessage(about_string);

                        alertDialog.setPositiveButton(android.R.string.ok, null);
@@ -1625,6 +1620,18 @@ public class MyPreferenceFragment extends PreferenceFragment implements OnShared
        setupDependencies();
    }

    /** Adds a TextView to an AlertDialog builder, placing it inside a scrollview and adding appropriate padding.
     */
    private void addTextViewForAlertDialog(AlertDialog.Builder alertDialog, TextView textView) {
        final float scale = getActivity().getResources().getDisplayMetrics().density;
        ScrollView scrollView = new ScrollView(getActivity());
        scrollView.addView(textView);
        // padding values from /sdk/platforms/android-18/data/res/layout/alert_dialog.xml
        textView.setPadding((int)(5*scale+0.5f), (int)(5*scale+0.5f), (int)(5*scale+0.5f), (int)(5*scale+0.5f));
        scrollView.setPadding((int)(14*scale+0.5f), (int)(2*scale+0.5f), (int)(10*scale+0.5f), (int)(12*scale+0.5f));
        alertDialog.setView(scrollView);
    }

    /** Programmatically set up dependencies for preference types (e.g., ListPreference) that don't
     *  support this in xml (such as SwitchPreference and CheckBoxPreference), or where this depends
     *  on the device (e.g., Android version).
@@ -1697,7 +1704,19 @@ public class MyPreferenceFragment extends PreferenceFragment implements OnShared

        AlertDialog.Builder alertDialog = new AlertDialog.Builder(MyPreferenceFragment.this.getActivity());
        alertDialog.setTitle(R.string.preference_privacy_policy);
        alertDialog.setMessage(R.string.preference_privacy_policy_text);

        //SpannableString span = new SpannableString(getActivity().getResources().getString(R.string.preference_privacy_policy_text));
        //Linkify.addLinks(span, Linkify.WEB_URLS | Linkify.EMAIL_ADDRESSES);
        Spanned span = Html.fromHtml(getActivity().getResources().getString(R.string.preference_privacy_policy_text));
        // clickable text is only supported if we call setMovementMethod on the TextView - which means we need to create
        // our own for the AlertDialog!
        TextView textView = new TextView(getActivity());
        textView.setText(span);
        textView.setMovementMethod(LinkMovementMethod.getInstance());
        textView.setTextAppearance(getActivity(), android.R.style.TextAppearance_Medium);
        addTextViewForAlertDialog(alertDialog, textView);
        //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
+19 −9
Original line number Diff line number Diff line
@@ -991,21 +991,31 @@
    <string name="preference_privacy_policy_summary" translatable="false">Tap to display privacy policy</string>
    <string name="preference_privacy_policy_online" translatable="false">Online privacy policy</string>
    <string name="preference_privacy_policy_text" translatable="false"> <!-- 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.
        <!-- now interpreted as HTML so that we can have the mailto link, for the contact that's needed for Google Play policies! -->
        <!-- be careful of rewording/removing bits, as some things here may be required for Google Play policies -->
        Open Camera is developed by Mark Harman. If you have inquiries about my privacy policy,
        please contact by email me at
        &lt;a href=\"mailto:mark.harman.apps@gmail.com?subject=Open%20Camera%20privacy%20policy\"&gt;mark.harman.apps@gmail.com&lt;/a&gt;.
        &lt;br/&gt;Open Camera accesses camera sensor and microphone data to fulfil its purpose as a camera.
        Microphone is also used for the optional \"Audio control\".
        \nAccess to files is needed (at least for Android 9 and earlier) to save resultant files such as photos and videos to your device.
        \nLocation permission is required for the optional geotagging features (for photos and videos,
        &lt;br/&gt;Access to files is needed (at least for Android 9 and earlier) to save resultant files such as photos and videos to your device.
        &lt;br/&gt;Location permission is requested in order to deliver the optional geotagging features (for photos and videos,
        including stamp and subtitles options).
        When relevant option(s) are enabled, your device location will be stored in photo/video/subtitle files.
        Location permission is also required to connect to Bluetooth remote control devices.
        \nSince Open Camera also uses operating system APIs, you should review relevant privacy policies
        Location permission is also requested in order to connect to Bluetooth remote control devices.
        &lt;br/&gt;Resultant data such as photos or videos can be shared with
        other apps if you use the share option in Open Camera, or when Open Camera is called by
        another app on your device.
        &lt;br/&gt;Since Open Camera does not transmit personal or sensitive information to me, I do not have
        data handling procedures, data retention or deletion policies.
        &lt;br/&gt;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:
        \n*The optional voice control option uses the Android speech recognition service. When enabled,
        &lt;br/&gt;*The optional voice control option uses the Android 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 the Android Geocoder API.
        When enabled, this requires that your device transmits location data across the Internet to a
        &lt;br/&gt;*The \"addresses\" option for photo stamp or video subtitles uses the Android Geocoder API.
        When this option is enabled, in order to deliver this functionality the API transmits your device 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.
        &lt;br/&gt;*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" translatable="false">