2018年9月19日 星期三

隱私權政策

最後更新時間: 2018/9/20  (GMT+8)


非常歡迎您光臨本開發團隊所設計的應用程式APP 為了讓您能夠安心的使用本開發團隊所設計的應用程式APP的各項服務與資訊,特此向您說明隱私權保護政策,以保障您的權益,請您詳閱下列內容:
一、隱私權保護政策的適用範圍
隱私權保護政策內容,包括本開發團隊如何處理在您使用的應用程式APP服務時收集到的個人識別資料。隱私權保護政策不適用於本開發團隊所設計的應用程式APP以外的相關連結網站,也不適用於非本開發團隊所委託或參與管理的人員。
二、個人資料的蒐集、處理及利用方式
  • 當您下載使用本開發團隊所設計的應用程式APP功能服務時,我們將視該服務功能性質,請您提供必要的個人資料,並在該特定目的範圍內處理及利用您的個人資料;非經您書面同意,本開發團隊不會將個人資料用於其他用途,也不會洩漏公開個人隱私資料。
  • 本開發團隊所設計的應用程式APP在您使用服務信箱、問卷調查等互動性功能時,會保留您所提供的姓名、電子郵件地址、聯絡方式及使用時間等。
  • 於一般使用應用程式APP時,伺服器會自行記錄相關行徑,包括您使用連線設備的IP位址、使用時間、使用的瀏覽器、瀏覽及點選資料記錄等,做為我們增進網站服務的參考依據,此記錄為內部應用,決不對外公佈。
  • 為提供精確的服務,我們會將收集的問卷調查內容進行統計與分析,分析結果之統計數據或說明文字呈現,除供內部研究外,我們會視需要公佈統計數據及說明文字,但不涉及隱私個人之資料。
三、資料之保護
  • 本開發團隊設有資訊安全設備及必要的安全防護措施,加以保護應用程式APP相關服務連結及您的個人資料採用嚴格的保護措施,只由經過授權的人員才能接觸您的個人資料,相關處理人員皆簽有保密合約,如有違反保密義務者,將會受到相關的法律處分。
  • 如因業務需要有必要委託其他單位提供服務時,本開發團隊亦會嚴格要求其遵守保密義務,並且採取必要檢查程序以確定其將確實遵守。
四、應用程式APP對外的相關連結
本開發團隊所設計的應用程式APP內提供其他網站的網路連結,該連結網站不適用本開發團隊所設計的應用程式APP的隱私權保護政策,您必須參考該連結網站中的隱私權保護政策。
五、與第三人共用個人資料之政策
本開發團隊絕不會提供、交換、出租或出售任何您的個人資料給其他個人、團體、私人企業或公務機關,但有法律依據或合約義務者,不在此限。
前項但書之情形包括不限於:
  • 經由您書面同意。
  • 法律明文規定。
  • 為免除您生命、身體、自由或財產上之危險。
  • 與公務機關或學術研究機構合作,基於公共利益為統計或學術研究而有必要,且資料經過提供者處理或蒐集者依其揭露方式無從識別特定之當事人。
  • 當您在使用本開發團隊所設計的應用程式APP的,違反服務條款或可能損害或妨礙其他使用者權益或導致任何人遭受損害時,經本開發團隊管理單位研析揭露您的個人資料是為了辨識、聯絡或採取法律行動所必要者。
  • 有利於您的權益。
  • 本開發團隊委託廠商協助蒐集、處理或利用您的個人資料時,將對委外廠商或個人善盡監督管理之責。
六、隱私權保護政策之修正
本開發團隊所設計的應用程式APP隱私權保護政策將因應需求隨時進行修正,修正後的條款將刊登於網站上。


2018年5月21日 星期一

(app)實作定位個人位置

  1. package com.xin.mygooglemap;  
  2.   
  3. import android.Manifest;  
  4. import android.content.DialogInterface;  
  5. import android.content.Intent;  
  6. import android.content.pm.PackageManager;  
  7. import android.location.Criteria;  
  8. import android.location.Location;  
  9. import android.location.LocationListener;  
  10. import android.location.LocationManager;  
  11. import android.net.Uri;  
  12. import android.os.Build;  
  13. import android.provider.Settings;  
  14. import android.support.annotation.NonNull;  
  15. import android.support.v4.app.ActivityCompat;  
  16. import android.support.v7.app.AlertDialog;  
  17. import android.support.v7.app.AppCompatActivity;  
  18. import android.os.Bundle;  
  19. import android.util.Log;  
  20. import android.view.View;  
  21. import android.widget.TextView;  
  22. import android.widget.Toast;  
  23.   
  24. public class MainActivity extends AppCompatActivity {  
  25.     private LocationManager manager;  
  26.     private final int ACCESS_FINE_LPCATION = 1678;  
  27.     private String best;  
  28.     private Location currentLocation;  
  29.     private LocationListener listener = new LocationListener() {  
  30.         @Override  
  31.         public void onLocationChanged(Location location) {  
  32.             //when location change  
  33.             currentLocation = location;  
  34.             updatePosition();  
  35.         }  
  36.   
  37.         @Override  
  38.         public void onStatusChanged(String s, int i, Bundle bundle) {  
  39.   
  40.         }  
  41.   
  42.         @Override  
  43.         public void onProviderEnabled(String s) {  
  44.   
  45.         }  
  46.   
  47.         @Override  
  48.         public void onProviderDisabled(String s) {  
  49.   
  50.         }  
  51.     };  
  52.   
  53.     @Override  
  54.     protected void onCreate(Bundle savedInstanceState) {  
  55.         super.onCreate(savedInstanceState);  
  56.         setContentView(R.layout.activity_main);  
  57.         manager = (LocationManager) getSystemService(LOCATION_SERVICE);  
  58.         if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {//check Location permissions is open .  
  59.             AlertDialog.Builder builder = new AlertDialog.Builder(this);  
  60.             builder.setMessage("is Enabled GPS ? ")  
  61.                     .setTitle("Message")  
  62.                     .setPositiveButton("yes"new DialogInterface.OnClickListener() {  
  63.                         @Override  
  64.                         public void onClick(DialogInterface dialogInterface, int i) {  
  65.                             startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));  
  66.                         }  
  67.                     })  
  68.                     .setNegativeButton("No"null)  
  69.                     .create()  
  70.                     .show();  
  71.         }  
  72.         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {  
  73.             requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, ACCESS_FINE_LPCATION);  
  74.         }  
  75.   
  76.     }  
  77.   
  78.     @Override  
  79.     public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {  
  80.         super.onRequestPermissionsResult(requestCode, permissions, grantResults);  
  81.         if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {  
  82.             Toast.makeText(this"have open Location Managetion !!", Toast.LENGTH_SHORT);  
  83.         } else {  
  84.             finish();  
  85.         }  
  86.     }  
  87.   
  88.     @Override  
  89.     protected void onResume() {  
  90.         super.onResume();  
  91.         best = manager.getBestProvider(new Criteria(), true);//get best Result  
  92.         try {  
  93.             if (manager != null) {  
  94.                 currentLocation = manager.getLastKnownLocation(best);//get last Read Location  
  95.                 manager.requestLocationUpdates(best,5000,5,listener);//自動更新 5sec更新一次,5m以上更新  
  96.             }else{  
  97.                 currentLocation = manager.getLastKnownLocation(LocationManager.GPS_PROVIDER);  
  98.                 manager.requestLocationUpdates(LocationManager.GPS_PROVIDER,5000,5,listener);  
  99.             }  
  100.         }catch (SecurityException ex){  
  101.             Log.d("","GPS permission has not been activated");  
  102.         }  
  103.        updatePosition();  
  104.     }  
  105.   
  106.     private void updatePosition() {  
  107.         TextView LocationText = findViewById(R.id.locationText);  
  108.         if(currentLocation!=null){  
  109.             //output  
  110.             LocationText.setText(String.format("Latitude: %f ,%n Longitude: %f,%n Altitude:" +  
  111.                     " %f",currentLocation.getLatitude(),currentLocation.getLongitude(),  
  112.                     currentLocation.getAltitude()));  
  113.         }else{  
  114.             LocationText.setText("Reading .....");  
  115.         }  
  116.     }  
  117.     public void openMap(View view) {  
  118.         Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(String.format("geo:%f, %f",currentLocation.getLatitude(),currentLocation.getLongitude())));  
  119.         startActivity(intent);  
  120.     }