Home
คอร์ส สอนแอนดรอยด์ นอกสถานที่ ม.ราชภัฏอุดร
ก่อนอื่นต้องขอ ขอบคุณ อาจารย์ จาก ม.ราชภัฏอุดร มากๆ ที่ ให้ความสนใจ ในการเขียนโค้ดแอนดรอยด์ โดยการเข้าร่วมการอบรมการเขียนโค้ดแอนดรอยด์ เชื่อมต่อ ฐานข้อมูล Firebase ในวันที่ 19-22 พฤษจิกายน ที่ผ่านมาครับ
สอนเริ่มจาก ศูนย์ จนเชื่อมต่อ Firebase ได้
อาจารย์ ม.ราชภัฎอุดร เป็นอะไร ? ที่ Amazing มาก น่ารัก สนุก ครับ
การอัพเวอร์ชั่น จาก Angular 6 ไป Angular 7
ว่าจะเขียนบทความนี่มาหลายทีแล้ว พอดี คอร์ส สอนโปรเจ็กตัวต่อตัว http://www.androidthai.in.th/private-project-android-course-team.html คนเรียนมีการใช้ Angular 6 cli มาก่อน ต้องการอัพ ไป Angular 7CLI ต้องทำอย่างไร ?
สิ่งแรกใช้คำสั่ง
ng --version
เพื่อทำการหาก่อนว่า เวอร์ชั่นปัจจุบันของ Angular ของตัวเองเป็นอะไร ? เมื่อได้เช็คว่า Angualar เวอร์ชันปัจจุบันของเราเป็น เวอร์ชั่น 6 ต้องถอดออกก่อน
โดยใช้คำสั่ง
sudo npm uninstall -g angular-cli
สำหรับ คนใช้แมค จะมี sudo นำหน้า แต่ถ้า Windows ให้ npm ไปได้เลยครับ แล้ว รอ รอ รอ
สำหรับแมค ให้กรอก Password เครื่อง และ รอ รอ รอ
คอร์ส สอนโค้ด iOS ด้วยภาษา Swift ตัวต่อทีม วันที่ 7,8 พฤษจิกายน
เมื่อวันที่ 7,8 พฤษจิกายน มีคอร์ส สอนเขียนโค้ด iOS หรือ ไอโฟน ไอเพด ด้วย Swift รายละเอียด http://www.androidthai.in.th/course-basic-ios-with-swift-private.html
ขอบคุณ อาจารย์ จาก ราชภัฏศรีสะเกษ มากๆ นะครับ
ไว้มาสเตอร์ ขึ้นไปสอน ที่ ศรีษะเกต บ้าง
Read more: คอร์ส สอนโค้ด iOS ด้วยภาษา Swift ตัวต่อทีม วันที่ 7,8 พฤษจิกายน
การค้นหาพิกัด ละติจูด ลองติจูด บน แอพแอนดรอยด์
ตามหัวข้อเลยครับ การค้นหา Lattitude, Longtitude บน แอนดรอยด์ สิ่งแรกต้อง ออกแบบ UI ให้มี 2 TextView แบบนี่ก่อน
มาสเตอร์ ออกแบบง่ายๆ โดยมีแค่ TextView 2 ตัวเรียงกันมาครับ และ ส่วนของ Main Activity เป็นแบบนี่ครับ
package com.hitachi.com.getlocation; import android.Manifest; import android.content.pm.PackageManager; import android.location.Criteria; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Build; import android.support.annotation.NonNull; import android.support.annotation.RequiresApi; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private LocationManager locationManager; //1 private Criteria criteria;//2 private double latDouble, longDouble; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (!checkIfAlreadyhavePermission()) { requestForSpecificPermission(); } //setup Location //3 locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_FINE); criteria.setAltitudeRequired(false); criteria.setBearingRequired(false); //ไม่หาพิกัดความสูงจากระดับน้ำทะเล }//main //11 //method นี้จะทำงานเมื่อหลังจากพัก aPP แล้วกลับเข้ามาใหม่ @Override protected void onResume() { super.onResume(); //หาพิกัดจาก network Location networkLocation = myFindLocation(LocationManager.NETWORK_PROVIDER); if (networkLocation != null) { latDouble = networkLocation.getLatitude(); longDouble = networkLocation.getLongitude(); } //หาพิกัดจาก PGS Card Location gpsLocation = myFindLocation(LocationManager.GPS_PROVIDER); if (gpsLocation != null) { latDouble = gpsLocation.getLatitude(); longDouble = gpsLocation.getLongitude(); } showView(); } private void showView() { TextView latTextView = findViewById(R.id.txtLat); TextView longTextView = findViewById(R.id.txtLong); latTextView.setText("Lat : " + Double.toString(latDouble)); longTextView.setText("Long : " + Double.toString(longDouble)); } //10 //method นี้ทำงานเมื่อปิด app @Override protected void onStop() { super.onStop(); locationManager.removeUpdates(locationListener); } //6 public Location myFindLocation(String strProvider) { Location location = null; //เช็คการ์ด GPS if (locationManager.isProviderEnabled(strProvider)) { //8 //Check permission ได้มาจากกด alt + enter เลือก add permission จากการส่งตรง locationManager.requestLocationUpdates(strProvider, 1000, 10, locationListener); if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { // TODO: Consider calling // ActivityCompat#requestPermissions // here to request the missing permissions, and then overriding // public void onRequestPermissionsResult(int requestCode, String[] permissions, // int[] grantResults) // to handle the case where the user grants the permission. See the documentation // for ActivityCompat#requestPermissions for more details. return null; } //7 locationManager.requestLocationUpdates(strProvider, 1000, 10, locationListener); //9 location = locationManager.getLastKnownLocation(strProvider); } return location; } //เมื่อมีการเปลี่ยนพิกัด class นี้จะทำงาน //4 public LocationListener locationListener = new LocationListener() { @Override public void onLocationChanged(Location location) { //5 latDouble = location.getLatitude(); longDouble = location.getLongitude(); } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } }; @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { switch (requestCode) { case 101: if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { //granted } else { //not granted } break; default: super.onRequestPermissionsResult(requestCode, permissions, grantResults); } } //What is permission be request @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN) private void requestForSpecificPermission() { ActivityCompat.requestPermissions(this, new String[]{ Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.INTERNET, Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.BLUETOOTH, Manifest.permission.READ_PHONE_STATE, Manifest.permission.READ_CALL_LOG, Manifest.permission.READ_CONTACTS}, 101); } //Check the permission is already have private boolean checkIfAlreadyhavePermission() { int result = ContextCompat.checkSelfPermission(this, Manifest.permission.GET_ACCOUNTS); return result == PackageManager.PERMISSION_GRANTED; } }
การย้าย ViewController โดยมีการแนบข้อมูลไปด้วย บน Swift iOS ตอนที่ 9 การสร้าง Cocoa Touch File สำหรับ View Controller ที่สอง
หลังจากที่เราออกแบบ UI ของ View Controller ที่สองเสร็จแล้ว แต่ ? การใช้งาน จะต้องมี Class Swift ที่สืบทอด Class View Controller เรามาสร้างกันครับ
สร้างไฟร์ ใหม่ โดยการไปที่ File > New > File
เลือก Cocoa Touch ครับ
การย้าย ViewController โดยมีการแนบข้อมูลไปด้วย บน Swift iOS ตอนที่ 8 การสร้าง Label ไว้สำหรับ รับค่าจาก View Controller แรก
ก่อนที่เราจะ ส่งค่า ที่ได้จากการกรอก TextField ที่ View Controller แรก เราจะสร้าง Label สำหรับ แสดงผล ที่รับได้มา ไปเพิ่ม Label กันครับ
เปิด ไลบรารี่ และ Search หา Label
ลากไปปล่อยไว้ใน View Controller ที่สอง