You are looking for information, articles, knowledge about the topic nail salons open on sunday near me 날씨 앱 만들기 on Google, you do not find the information you need! Here are the best content compiled and compiled by the toplist.giarevietnam.vn team, along with other related topics such as: 날씨 앱 만들기 무료날씨앱, 날씨앱 추천, 구글날씨앱, 정확한 날씨 앱 추천, 기상청날씨앱, 광고없는 날씨앱, 오늘날씨, 메신저 앱 만들기
Table of Contents
실시간 시간 및 날씨 위젯 앱 만들기 – 안드로이드 헤엄치기 [안드로이드 맛보기]
- Article author: wikidocs.net
- Reviews from users: 30234
Ratings
- Top rated: 3.3
- Lowest rated: 1
- Summary of article content: Articles about 실시간 시간 및 날씨 위젯 앱 만들기 – 안드로이드 헤엄치기 [안드로이드 맛보기] 실시간 시간 및 날씨 위젯 앱 만들기. ConstraintLayout. Volley. JSON. Weather Api. 이제는 위의 네 개념을 이용한 웹 … …
- Most searched keywords: Whether you are looking for 실시간 시간 및 날씨 위젯 앱 만들기 – 안드로이드 헤엄치기 [안드로이드 맛보기] 실시간 시간 및 날씨 위젯 앱 만들기. ConstraintLayout. Volley. JSON. Weather Api. 이제는 위의 네 개념을 이용한 웹 … 온라인 책을 제작 공유하는 플랫폼 서비스
- Table of Contents:
![실시간 시간 및 날씨 위젯 앱 만들기 - 안드로이드 헤엄치기 [안드로이드 맛보기]](https://wikidocs.net/images/book/안드로이드.png)
날씨 앱 만들기 : 안드로이드 GPS 정보 받아오기
- Article author: wpioneer.tistory.com
- Reviews from users: 48901
Ratings
- Top rated: 4.1
- Lowest rated: 1
- Summary of article content: Articles about 날씨 앱 만들기 : 안드로이드 GPS 정보 받아오기 날씨 앱 만들기 : 안드로이드 GPS 정보 받아오기 · 1. Manifest파일에 권한 추가하기 · 2. LocationManager 객체 생성하기 · 3. 안드로이드 위치정보 권한 … …
- Most searched keywords: Whether you are looking for 날씨 앱 만들기 : 안드로이드 GPS 정보 받아오기 날씨 앱 만들기 : 안드로이드 GPS 정보 받아오기 · 1. Manifest파일에 권한 추가하기 · 2. LocationManager 객체 생성하기 · 3. 안드로이드 위치정보 권한 … 날씨 앱을 만들기 위해선 필수적으로 필요한 GPS 정보를 받아와 보기로 했다. 일단 GPS 정보를 받아오기 위해선 아래와 같은 과정을 거친다. 1. Manifest파일에 권한 추가하기 2. LocationManager 객체 생성하기 3..
- Table of Contents:
‘코딩일기android studio’ 관련글
티스토리툴바

안드로이드 스튜디오 날씨 앱 만들기 | 플러터(Flutter) 조금 매운맛🌶️ 강좌 13 | 날씨 앱(Weather App) 만들기 1 11282 좋은 평가 이 답변
- Article author: ppa.covadoc.vn
- Reviews from users: 46940
Ratings
- Top rated: 4.7
- Lowest rated: 1
- Summary of article content: Articles about 안드로이드 스튜디오 날씨 앱 만들기 | 플러터(Flutter) 조금 매운맛🌶️ 강좌 13 | 날씨 앱(Weather App) 만들기 1 11282 좋은 평가 이 답변 d여기에서 플러터(Flutter) 조금 매운맛🌶️ 강좌 13 | 날씨 앱(weather app) 만들기 1 – 안드로이드 스튜디오 날씨 앱 만들기 주제에 대한 세부정보를 참조하세요. …
- Most searched keywords: Whether you are looking for 안드로이드 스튜디오 날씨 앱 만들기 | 플러터(Flutter) 조금 매운맛🌶️ 강좌 13 | 날씨 앱(Weather App) 만들기 1 11282 좋은 평가 이 답변 d여기에서 플러터(Flutter) 조금 매운맛🌶️ 강좌 13 | 날씨 앱(weather app) 만들기 1 – 안드로이드 스튜디오 날씨 앱 만들기 주제에 대한 세부정보를 참조하세요.
- Table of Contents:
안드로이드 스튜디오 날씨 앱 만들기 주제에 대한 동영상 보기
d여기에서 플러터(Flutter) 조금 매운맛🌶️ 강좌 13 날씨 앱(weather app) 만들기 1 – 안드로이드 스튜디오 날씨 앱 만들기 주제에 대한 세부정보를 참조하세요
안드로이드 스튜디오 날씨 앱 만들기 주제에 대한 자세한 내용은 여기를 참조하세요
주제와 관련된 이미지 안드로이드 스튜디오 날씨 앱 만들기
주제에 대한 기사 평가 안드로이드 스튜디오 날씨 앱 만들기
#190820 날씨 앱 만들기 (1)
[안드로이드 스튜디오 독학#27] 현재 날씨 어플 [Android] OpenWeatherMap 날씨 API 사용 앱 만들기 [React-Native]앱만들기-2(날씨어플만들기)android simple weather application
React Native로 날씨 앱(Weather App) 만들기 (5) -날씨 정보 및 아이콘 가져오기
키워드에 대한 정보 안드로이드 스튜디오 날씨 앱 만들기
사람들이 주제에 대해 자주 검색하는 키워드 플러터(Flutter) 조금 매운맛🌶️ 강좌 13 날씨 앱(weather app) 만들기 1
Recent Posts

플러터로 기상청 날씨 앱 만들기 일지 1. UI 디자인 — 노력중인 블로그
- Article author: florescene.tistory.com
- Reviews from users: 24554
Ratings
- Top rated: 4.1
- Lowest rated: 1
- Summary of article content: Articles about 플러터로 기상청 날씨 앱 만들기 일지 1. UI 디자인 — 노력중인 블로그 코딩셰프 강좌를 통해 만든 날씨앱을 활용하여 앱을 제작하기로 했으므로, 배운 코드를 활용하기 위해 우선 코드분석부터 했다. …
- Most searched keywords: Whether you are looking for 플러터로 기상청 날씨 앱 만들기 일지 1. UI 디자인 — 노력중인 블로그 코딩셰프 강좌를 통해 만든 날씨앱을 활용하여 앱을 제작하기로 했으므로, 배운 코드를 활용하기 위해 우선 코드분석부터 했다. UI 디자인 구상 UI 디자인의 이해 UI 디자인은 위젯을 배치하는 방식으로 이루어진다. 대강 위의 그림과 같이 위젯이 위젯을 감싸는 식으로 원하는 UI를 구현할 수 있다. Container는 child를 하나밖에 가질 수..
- Table of Contents:
블로그 메뉴
공지사항
인기 글
태그
최근 댓글
최근 글
티스토리
코드 분석
티스토리툴바

[miniProject] 간단한 날씨 어플리케이션 만들기 :: 왜이렇게어렵지?
- Article author: whyhard.tistory.com
- Reviews from users: 4115
Ratings
- Top rated: 3.2
- Lowest rated: 1
- Summary of article content: Articles about [miniProject] 간단한 날씨 어플리케이션 만들기 :: 왜이렇게어렵지? [miniProject] 간단한 날씨 어플리케이션 만들기 … 날씨 API를 이용해서 … 등을 통해서 사용자에게 날씨를 알려주는 간단한 어플을 만들려고 … …
- Most searched keywords: Whether you are looking for [miniProject] 간단한 날씨 어플리케이션 만들기 :: 왜이렇게어렵지? [miniProject] 간단한 날씨 어플리케이션 만들기 … 날씨 API를 이용해서 … 등을 통해서 사용자에게 날씨를 알려주는 간단한 어플을 만들려고 … 안녕하세요 오늘은 간단하게 날씨를 알려주는 어플리케이션을 만들어 보았습니다. 날씨 API를 이용해서 현재 온도 현재 위치 날씨정보 날씨 아이콘 등을 통해서 사용자에게 날씨를 알려주는 간단한 어플을 만들려..아무것도 모르지만 공부하는 친구
- Table of Contents:
관련글 관련글 더보기
인기포스트
티스토리툴바
![[miniProject] 간단한 날씨 어플리케이션 만들기 :: 왜이렇게어렵지?](https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdRWxEM%2Fbtq9pDhieKZ%2FGnsU0h9yiFsSUN2zFs4FaK%2Fimg.png)
#190820. 날씨 앱 만들기 (1) – API 불러오기
- Article author: applied-in-dimigo.tistory.com
- Reviews from users: 38264
Ratings
- Top rated: 4.5
- Lowest rated: 1
- Summary of article content: Articles about #190820. 날씨 앱 만들기 (1) – API 불러오기 날씨 앱 만들기 (1) – API 불러오기. Aria (Applied) 2019. 8. 20. 19:57. 그러다가 또 다시 새로운 강의를 발견했어요. https://www.youtube.com/watch?v=awYSrhUZQL0 … …
- Most searched keywords: Whether you are looking for #190820. 날씨 앱 만들기 (1) – API 불러오기 날씨 앱 만들기 (1) – API 불러오기. Aria (Applied) 2019. 8. 20. 19:57. 그러다가 또 다시 새로운 강의를 발견했어요. https://www.youtube.com/watch?v=awYSrhUZQL0 … 그러다가 또 다시 새로운 강의를 발견했어요. https://www.youtube.com/watch?v=awYSrhUZQL0 오늘의 날씨! 그게 바로 제가 만들어 갈 자그만한 프로젝트가 되지 않을까 싶습니다. 일단 프로젝트부터 만들어야하겠..
- Table of Contents:

디자이너, 날씨앱 개발하기
- Article author: brunch.co.kr
- Reviews from users: 47431
Ratings
- Top rated: 4.6
- Lowest rated: 1
- Summary of article content: Articles about 디자이너, 날씨앱 개발하기 저는 만드는 것을 좋아합니다. 나무, 가죽, 종이, 회로기판, 자석, 3D 프린팅, html, js, nodejs.. 어떤 재료나 방식이든 상관없이, 각각의 전문가는 … …
- Most searched keywords: Whether you are looking for 디자이너, 날씨앱 개발하기 저는 만드는 것을 좋아합니다. 나무, 가죽, 종이, 회로기판, 자석, 3D 프린팅, html, js, nodejs.. 어떤 재료나 방식이든 상관없이, 각각의 전문가는 … 저는 만드는 것을 좋아합니다. 나무, 가죽, 종이, 회로기판, 자석, 3D 프린팅, html, js, nodejs.. 어떤 재료나 방식이든 상관없이, 각각의 전문가는 아니지만 뭔가 만드는 것을 좋아합니다. 특히 쓸모가 있는 물건이나 작동하는 것들이요. 예전부터 모바일 앱을 만들어보고 싶었습니다. 개발에 대한 지식이 거의 없지만 인터넷을 검색해가며 js,
- Table of Contents:
그래서 완성한 앱의 모습
진행했던 프로세스
배운 점
이야기 정리

See more articles in the same category here: https://toplist.giarevietnam.vn/blog/.
날씨 앱 만들기 : 안드로이드 GPS 정보 받아오기
728×90
반응형
날씨 앱을 만들기 위해선 필수적으로 필요한 GPS 정보를 받아와 보기로 했다.
일단 GPS 정보를 받아오기 위해선 아래와 같은 과정을 거친다.
1. Manifest파일에 권한 추가하기
2. LocationManager 객체 생성하기
3. 안드로이드 위치정보 권한 확인후 권한 요청하기
4. 위치정보 권한 요청에 의한 콜백 함수인 onRequestPermissionsResult() 만들기
5. 위치정보 update 되었을때 실행하는 onLocationChanged() 만들기
1번 과정부터 차근차근히 살펴보자.
1. Manifest파일에 권한 추가하기
일단 Manifest 파일에 들어가서 아래처럼 권한을 추가한다.
2. LocationManager 객체 생성하기
권한을 추가해줬다면 LocationManager를 사용할 Activity로 이동해서 해당 Activity에서
LocationManager 객체를 생성해줘야 한다
나는 캡슐화를 통해서 만들것이기 때문에 해당 Class 내에서 먼저 LocationManager 변수를 만들어줬고
private LocationManager lm;
그 다음에 해당 Activity 내의 onCreate() 내에서 객체를 생성해주었다.
//LocationManager 객체 생성 lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
3. 안드로이드 위치정보 권한 확인후 권한 요청하기
그럼 이제 해당 앱에서의 위치정보 권한이 있는지 확인한 다음에 없다면 권한 요청을 해줘야 한다.
해당 부분의 코드는 아래와 같다.
//위치정보 권한 허용되어 있는지 아닌지를 확인하는 부분 if(ActivityCompat.checkSelfPermission(SplashActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){ //위치정보 권한 허용되어 있지 않다면 실행하는 코드, 여기서 request에 대한 응답이 나오면 아래에 있는 onRequestPermissionsResult() 함수를 콜백하게 됨 ActivityCompat.requestPermissions(SplashActivity.this,new String[]{ Manifest.permission.ACCESS_FINE_LOCATION},200); //위치정보 권한을 요청한다. }else { //위치정보 권한이 허용되어 있을때 실행하는 코드 }
이렇게 되면 이제 앱을 키게 되면 아래와 같이 위치정보 권한 요청을 하게 된다.
4. 위치정보 권한 요청에 의한 콜백 함수인 onRequestPermissionsResult() 만들기
onRequestPermissionsResult() 은 우리가 3번 과정에서 권한 요청에 대한 결과를 받았을때
호출하게 되는 함수이다.
나는 결과요청을 받았을때 아래와 같은 결과를 내볼 예정이다.
위치정보 권한 허가 요청을 받았을때
– 위치정보 권한 허가 요청을 받았을때는 현재 위치정보를 찍고 날씨정보 API 호출하기
위치정보 권한 허가 요청을 못 받았을때
– 위치정보 허가를 못받았을시에는 현재 위치정보를 토대로 날씨정보를 받아오지 못한다고
ToastMessage 출력후 기본 설정 위치로 날씨정보 API 호출하기
그것에 대한 코드는 아래와 같다.
@Override public void onRequestPermissionsResult(int requestCode,String[] permissions,int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if(requestCode == 200){ //permissionCode가 200이고 if(grantResults[0] == 0){ // 그중 가장 첫번째 result가 0 즉 승인된경우 진입 Toast.makeText(getApplicationContext(),”위치정보 승인됨”,Toast.LENGTH_SHORT).show(); //위치정보 승인됐다고 알리고 //위치정보 권한을 받았다면 진입 if(ActivityCompat.checkSelfPermission(SplashActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED){ lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,this); //위치정보를 update하는 함수 } getWeather(mavm); }else{ //위치정보를 허가받지 못했을경우 진입 Toast.makeText(getApplicationContext(),”위치정보를 승인하지 않으면 현재위치 기반으로
날씨정보를 알려드릴수 없습니다.”,Toast.LENGTH_LONG).show(); getWeather(mavm); //날씨정보 api 호출 } } }
그럼 이제 우리가 requestLocationUpdates()를 호출했으니 위치정보가 update되었을때 호출하는 콜백함수
onLocationChanged() 만 만들면 완료다.
5. 위치정보 update 되었을때 실행하는 onLocationChanged() 만들기
onLocationChanged() 함수는 위치정보가 update되어졌을때 호출하는 콜백 함수이다.
따라서 우리가 4번 단계에서 위치정보 update를 요청했을때 완료가 되면 해야할 행동은 아래와 같다.
위도와 경도를 입력을 하고 입력한 위도와 경도 출력이다.
(나는 위도와 경도를 입력할수 있도록 Coord 라는 class를 만들고 onCreate()에서 인스턴스(객체)를 생성하였다.)
코드는 아래와 같다.
@Override public void onLocationChanged(Location location) { coord.setLat(location.getLatitude()); //위도를 입력 coord.setLon(location.getLongitude()); //경도를 입력 Log.d(TAG,coord.toString()); //입력한 위도와 경두를 출력 //이건 이제 한번 update하고 나서 위치를 업데이트 다시 안시키기 위해서 하는것임 //이걸 하지 않으면 위치정보를 계속해서 update하기때문에 배터리 소모하게됨 lm.removeUpdates(this); }
이렇게 되면 위치정보를 받을수 있게 된다.
나의 전체적인 코드는 아래와 같다.
package wook.co.weather.view.splash; import android.Manifest; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.os.Handler; import android.util.Log; import android.view.View; import android.widget.Toast; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; import wook.co.weather.R; import wook.co.weather.models.dto.Coord; import wook.co.weather.models.dto.OpenWeather; import wook.co.weather.models.dto.ShortWeather; import wook.co.weather.view.MainActivity; import wook.co.weather.viewmodels.MAgencyViewModel; import wook.co.weather.viewmodels.WeatherViewModel; public class SplashActivity extends AppCompatActivity implements LocationListener { private ShortWeather sw; private MAgencyViewModel mavm; private final String TAG = “SplashActivity”; private LocationManager lm; private Coord coord; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.splash_screen); //MAgencyViewModel 객체 생성 mavm = new ViewModelProvider(this).get(MAgencyViewModel.class); coord = new Coord(); //LocationManager 객체 생성 lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); //위치정보 권한 허용되어 있는지 아닌지를 확인하는 부분 if(ActivityCompat.checkSelfPermission(SplashActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){ //위치정보 권한 허용되어 있지 않다면 실행하는 코드, 여기서 request에 대한 응답이 나오면 아래에 있는 onRequestPermissionsResult() 함수를 콜백하게 됨 ActivityCompat.requestPermissions(SplashActivity.this,new String[]{ Manifest.permission.ACCESS_FINE_LOCATION},200); //위치정보 권한을 요청한다. }else { //위치정보 권한이 허용되어 있을때 실행하는 코드 Log.d(TAG, “위치정보 허용됨”); lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,this); getWeather(mavm); } } @Override public void onRequestPermissionsResult(int requestCode,String[] permissions,int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if(requestCode == 200){ //permissionCode가 200이고 if(grantResults[0] == 0){ // 그중 가장 첫번째 result가 0 즉 승인된경우 진입 Toast.makeText(getApplicationContext(),”위치정보 승인됨”,Toast.LENGTH_SHORT).show(); //위치정보 승인됐다고 알리고 //위치정보 권한을 받았다면 진입 if(ActivityCompat.checkSelfPermission(SplashActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED){ lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,this); //위치정보를 update하는 함수 } getWeather(mavm); }else{ //위치정보를 허가받지 못했을경우 진입 Toast.makeText(getApplicationContext(),”위치정보를 승인하지 않으면 현재위치 기반으로
날씨정보를 알려드릴수 없습니다.”,Toast.LENGTH_LONG).show(); getWeather(mavm); } } } public void getWeather(MAgencyViewModel mavm){ mavm.init(); mavm.getWeather().observe(this, new Observer
() { @Override public void onChanged(ShortWeather shortWeather) { sw = mavm.getWeather().getValue(); Log.i(TAG,sw.toString()); Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { //intent 형성한다. Intent intent = new Intent(getApplicationContext(), MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);//액티비티 스택제거 //해당 intent에 객체를 실어서 보낸다. intent.putExtra(“shortWeather”,sw); startActivity(intent); } },1000); } }); } @Override public void onLocationChanged(Location location) { coord.setLat(location.getLatitude()); //위도를 입력 coord.setLon(location.getLongitude()); //경도를 입력 Log.d(TAG,coord.toString()); //입력한 위도와 경두를 출력 //이건 이제 한번 update하고 나서 위치를 업데이트 다시 안시키기 위해서 하는것임 //이걸 하지 않으면 위치정보를 계속해서 update하기때문에 배터리 소모하게됨 lm.removeUpdates(this); } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } } 반응형
안드로이드 스튜디오 날씨 앱 만들기 | 플러터(Flutter) 조금 매운맛🌶️ 강좌 13 | 날씨 앱(Weather App) 만들기 1 11282 좋은 평가 이 답변
당신은 주제를 찾고 있습니까 “안드로이드 스튜디오 날씨 앱 만들기 – 플러터(Flutter) 조금 매운맛🌶️ 강좌 13 | 날씨 앱(weather app) 만들기 1“? 다음 카테고리의 웹사이트 ppa.covadoc.vn 에서 귀하의 모든 질문에 답변해 드립니다: ppa.covadoc.vn/blog. 바로 아래에서 답을 찾을 수 있습니다. 작성자 코딩셰프 이(가) 작성한 기사에는 조회수 11,611회 및 좋아요 189개 개의 좋아요가 있습니다.
여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!
::::::::: 강좌내용 수정 공지(2022년 버전):::::::::
이 강좌는 널 세이프티 이전에 제작된 강좌입니다.
이번 강좌를 따라오다 보면 후반부에 사용자 디바이스 위치정보 사용 퍼미션을 묻는 팝업창이 뜨지 않을 겁니다. 이럴 때는 getLocation 메서드 내에,
\”Position position = await Geolocator.getCurrentPosition(desiredAccuracy: LocationAccuracy.high);\”
이 코드 위에 아래의 코드를 추가해 주면 됩니다.
\”LocationPermission permission = await Geolocator.requestPermission();\”
___________________________________________________________________________________________
정말 오랜만에 올리는 강좌입니다.^^;
이번 시간부터는 플러터(flutter) 날씨 앱(weather app)을 만들어 보겠습니다. 이번 강좌를 통해서 stateful widget(위젯)의 생명주기(widget life cycle)와 API의 기본개념, 그리고 현재 내 위치를 파악해서 위도와 경도로 표시해 주는 flutter geolocator라는 패키지도 설치해 보겠습니다.
조금 매운 맛 후반부 강좌로 들어가는 만큼 추후 강좌들은 실전앱을 만드는 형식으로 진행될 예정입니다. 또한 현재 플러터(Flutter) 2.0으로 업그레이드 되면서 deprecated된 스낵바와 raisedButton(elevatedButton) 강좌에 대한 업데이트도 조만간 예정되어 있으니 기대해 주시기 바랍니다.
프로젝트: https://github.com/icodingchef/weather_app
Geolocator package: https://pub.dev/packages/geolocator
이미지 출처: https://www.freepik.com/
Music licence:
Song – Alex Nekita – Child’s play
Follow Artist : https://soundcloud.com/alexnekita
Music promoted by DayDreamSound : https://youtu.be/EeGxkWNLnuI
ConstraintLayout. Volley. JSON. Weather Api. 이제는 위의 네 개념을 이용한 웹사이트와 소통할 수 있는 실시간 시간 및 날씨를 띄우는 앱을 만들어보겠습니다.
+ 여기에 자세히 보기
Source: wikidocs.net
Date Published: 6/30/2022
View: 2286
괜찮은 강의를 발견했어요. https://www.youtube.com/playlist?list=PLRx0vPvlEmdB6sCgj_jubp8KPb1ni0VOC 안드로이드 스튜디오 강좌 (Andro Studio …
+ 여기에 자세히 보기
Source: applied-in-dimigo.tistory.com
Date Published: 4/25/2021
View: 6788
스레드를 사용하는 이유가 통신이라 생각했고, 이를 위해 Network를 공부하면서 OpenAPI를 알게 되었고, 공공데이터를 받아서 사용하는 어플을 만들기 …
+ 여기에 자세히 보기
Source: seminzzang.tistory.com
Date Published: 7/18/2021
View: 9496
기상청의 데이터를 앱으로 간편하게 볼수 있다. (스마트폰 조작을 잘 못하시는 분들을 위해 버튼으로만 만듬). 2. 안드로이드 스튜디오와 자바 스마트 …
+ 더 읽기
Source: alisyabob.tistory.com
Date Published: 8/29/2021
View: 6777
[Andro] OpenWeatherMap 날씨 API 사용 앱 만들기. 용용개발 2018. 5. 28. 13:21. OpenWeatherMap을 이용한 날씨 APP을 만들어보겠습니다.+ 여기를 클릭
Source: yongyi1587.tistory.com
Date Published: 9/28/2021
View: 5474
첫번째 테스트 앱으로, 흔한 날씨 어플을 만들어보기로 했습니다. 일단 얻을 수 있는 정보를 찾기위해 OpenAPI 를 찾아보니, 기상청에서 주는 정보가 …
+ 더 읽기
Source: taisou.tistory.com
Date Published: 6/7/2022
View: 4028
안드로이드 날씨 어플 만들기(1) – andro simple weather application … 안드로이드를 본격적으로 공부 하면서 한번쯤은 간단히 날씨 앱을 만들어 …
+ 여기에 보기
Source: uzooin.tistory.com
Date Published: 6/14/2022
View: 237
Create-react-app으로 React Native를 크로스 플랫폼으로 개발하기 위한 빌드 도구이며 Xcode 혹은 Andro Studio 없이도 기기에서 쉽고 빠르게 코드를 …
+ 더 읽기
Source: nanyoungkim.tistory.com
Date Published: 5/6/2021
View: 9875
주제와 관련된 더 많은 사진을 참조하십시오 플러터(Flutter) 조금 매운맛🌶️ 강좌 13 | 날씨 앱(weather app) 만들기 1. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.
const DATA_API_KEY = “api키!” const API_STEM = “http://apis.data.go.kr/1360000/VilageFcstInfoService/getUltraSrtFcst” function xyUrl(x,y){ //30분전 의 정보를 가져온다 ( 실시간 정보는 업뎃이 안되서 안나옴 ) std_time = new Date() std_time.setMinutes(std_time.getMinutes() – 30 ) today = getFormatDate(std_time) time = getFormatTime(std_time) return `${API_STEM}?serviceKey=${DATA_API_KEY}&dataType=JSON&numOfRows=1000&pageNo=1&base_date=${today}&base_time=${time}&nx=${x}&ny=${y}` } function fetchForeCast(x,y){ return fetch(xyUrl(x,y)) .then(resonse => resonse.json()) .then(responseJSON => { /* console.log(responseJSON.response.body.items.item[0].baseDate) console.log(Object.keys(responseJSON.response.body.items.item).length) console.log(responseJSON.response.body.items.item.filter((object) => { return object[‘category’] === ‘T1H’ //기온 })[0].fcstValue) console.log(responseJSON.response.body.items.item.filter((object) => { return object[‘category’] === ‘SKY’ //하늘상태 0-5 맑음 6-8 구름많음 9-10 흐림 })[0].fcstValue) console.log(responseJSON.response.body.items.item.filter((object) => { return object[‘category’] === ‘REH’ //습도 })[0].fcstValue) */ return { cloudy: responseJSON.response.body.items.item.filter((object) => { return object[‘category’] === ‘SKY’ })[0].fcstValue, humidity: responseJSON.response.body.items.item.filter((object) => { return object[‘category’] === ‘REH’ })[0].fcstValue, temperature: responseJSON.response.body.items.item.filter((object) => { return object[‘category’] === ‘T1H’ })[0].fcstValue } }) .catch(error => { console.error(error) }) } function getFormatDate(date){ let year = date.getFullYear(); //yyyy let month = (1 + date.getMonth()); //M month = month >= 10 ? month : ‘0’ + month; //month 두자리로 저장 let day = date.getDate(); //d day = day >= 10 ? day : ‘0’ + day; //day 두자리로 저장 return year + ” + month + ” + day; //’-‘ 추가하여 yyyy-mm-dd 형태 생성 가능 } function getFormatTime(date){ let hour = date.getHours() let minutes = date.getMinutes() hour = hour >= 10 ? hour : ‘0’ + hour minutes = minutes >= 10 ? minutes : ‘0’ + minutes return hour + ” + minutes } export default { fetchForeCast: fetchForeCast }
weather_main_view.xml
AndroidManifest.xml
CMessage.java
package com.uzooin.geon.weather; public class CMessage { public final static int MSG_WEATHER_REQUEST_INFORMATION = 0; public final static int MSG_WEATHER_RESPONSE_INFORMATION = 0; }
GeoToWeather.java
package com.uzooin.geon.weather; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.util.List; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserFactory; import android.location.Address; import android.location.Geocoder; import com.google.android.maps.GeoPoint; public class GeoToWeather { private Geocoder geoCoder; private GeoPoint geoPoint; public GeoToWeather(Geocoder t_gc, GeoPoint t_gp) { geoCoder = t_gc; geoPoint = t_gp; } public Weather getWeather() { List tList=null; try { tList = geoCoder.getFromLocation((double)geoPoint.getLatitudeE6()/1000000, (double)geoPoint.getLongitudeE6()/1000000, 5); } catch (IOException e) { } // geocoder의 getFromLocation()을 이용하여 Reverse Geocoding(Geopoint->주소)한다. // getFromLocation()의 인자로 들어가는 latitude와 longitude는 마이크로 값이 아니므로 // 10^6을 나누어 인자로 넣어준다. Address tAddr = tList.get(0); Weather dataWeather = new Weather(); dataWeather.m_sRegion = tAddr.getLocality(); // 지역명을 가지고 온다. Geocoder 생성자의 두 번째 이자를 특정한 Locale로 주었을 경우에는 // 해당 언어로 지역명이 나온다. 영어가 Default이다. // 아래는 실제 파싱하는 부분이다. XmlPullParserFactory factory = null; try{ factory = XmlPullParserFactory.newInstance(); factory.setNamespaceAware(true); XmlPullParser xpp = null; xpp = factory.newPullParser(); String connectUrl = “http://www.google.co.kr/ig/api?weather=” + dataWeather.m_sRegion; // 해당 지역의 url을 설정한다. URL UrlRecWeather = null; UrlRecWeather = new URL(connectUrl); InputStream in; in = UrlRecWeather.openStream(); xpp.setInput(in, “euc-kr”); ReceiveParsing getParse = new ReceiveParsing(dataWeather); getParse.proceed(xpp); } catch(Exception ex) { } return dataWeather; } public void chageGeoPoint(GeoPoint t_gp) { geoPoint = t_gp; } // 파싱하는 클래스. 내부클래스로 삽입 class ReceiveParsing { Weather dataWeather; public ReceiveParsing(Weather t_dW) { dataWeather = t_dW; } void proceed(XmlPullParser ReceiveStream) { boolean bcurrent_condition = false; try { String sTag; int eventType = ReceiveStream.getEventType(); while (eventType != XmlPullParser.END_DOCUMENT) { // Wait(10); switch (eventType) { case XmlPullParser.START_DOCUMENT: break; case XmlPullParser.END_DOCUMENT: break; case XmlPullParser.START_TAG: // items.add(xpp.getAttributeValue(0)); sTag = ReceiveStream.getName(); if (sTag.equals(“current_conditions”)) { bcurrent_condition = true; } if (bcurrent_condition == true) { if (sTag.equals(“condition”)) { String sValue = ReceiveStream.getAttributeValue(0); dataWeather.m_sCurrentState = sValue; } else if (sTag.equals(“temp_f”)) { String sValue = ReceiveStream.getAttributeValue(0); dataWeather.m_nTempF = Integer.parseInt(sValue); } else if (sTag.equals(“temp_c”)) { String sValue = ReceiveStream.getAttributeValue(0); dataWeather.m_nTempC = Integer.parseInt(sValue); } else if (sTag.equals(“humidity”)) { String sValue = ReceiveStream.getAttributeValue(0); dataWeather.m_sHumidity = sValue; } else if (sTag.equals(“wind_condition”)) { String sValue = ReceiveStream.getAttributeValue(0); dataWeather.m_sWindCondition = sValue; } } break; case XmlPullParser.END_TAG: sTag = ReceiveStream.getName(); if (sTag.equals(“current_conditions”)) { bcurrent_condition = false; } break; case XmlPullParser.TEXT: break; } eventType = ReceiveStream.next(); } } catch (Exception e) { } } } } // 날씨 형에 관한 구조를 지니는 구조체 형 클래스 class Weather { int m_nTempF = 0; int m_nTempC = 0; String m_sRegion = “Not”; String m_sCurrentState = “Not”; String m_sHumidity = “Not”; String m_sWindCondition = “Not”; }
WeatherThread.java
package com.uzooin.geon.weather; import android.content.Context; import android.location.Geocoder; import android.os.Handler; import android.os.Looper; import android.os.Message; import com.google.android.maps.GeoPoint; public class WeatherThread extends Thread { Handler mMainHandler; Weather t_Weather; Geocoder t_Geocoder; GeoPoint t_GeoPoint; GeoToWeather gtw; Context mContext; WeatherThread (Context aContext, Handler aHandler) { this.mMainHandler = aHandler; this.mContext = aContext; t_Geocoder = new Geocoder(this.mContext); // for getFromLocation() // getFromLocation()함수를 이용하여 GeoPoint값을 지역 값으로 가져오는데 필요하다. // 오버로딩된 생성자의 두 번째 인자를 사용하여 언어 선택 가능하다(Locale). t_GeoPoint = new GeoPoint(37517292, 127037187); // location value for transform // 변환하고자 하는 GeoPoint 값이다. // http://www.mygeoposition.com/ 에서 값을 얻을 수 있다. gtw = new GeoToWeather(t_Geocoder, t_GeoPoint); } @Override public void run() { // TODO Auto-generated method stub Looper.prepare(); Looper.loop(); } public Handler mWeatherHandler = new Handler() { public void handleMessage(Message msg) { Message retMsg = Message.obtain(); switch (msg.what) { case CMessage.MSG_WEATHER_REQUEST_INFORMATION: if (gtw != null) { t_Weather = gtw.getWeather(); retMsg.what = CMessage.MSG_WEATHER_RESPONSE_INFORMATION; retMsg.obj = t_Weather; mMainHandler.sendMessage(retMsg); } break; } } }; }
MainActivity.java
package com.uzooin.geon.weather; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; import android.app.Activity; import android.content.Context; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.widget.ImageView; import android.widget.TextView; public class MainActivity extends Activity { private TextView location; private TextView date; private TextView condition; private TextView forecast; private ImageView conditionImage; //private Location mLocation = null; WeatherThread mWeatherTread; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.weather_main_view); this.location = (TextView) findViewById(R.id.view_location); this.date = (TextView) findViewById(R.id.view_date); this.condition = (TextView) findViewById(R.id.view_condition); this.forecast = (TextView) findViewById(R.id.view_forecast); this.conditionImage = (ImageView) findViewById(R.id.condition_image); mWeatherTread = new WeatherThread(this, mMainHandler); mWeatherTread.setDaemon(true); mWeatherTread.start(); RequestWeatherInfo(); } public void RequestWeatherInfo() { Message msg = Message.obtain(); msg.what = CMessage.MSG_WEATHER_REQUEST_INFORMATION; mWeatherTread.mWeatherHandler.sendMessage(msg); } Handler mMainHandler = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { case CMessage.MSG_WEATHER_RESPONSE_INFORMATION: Weather t_Weather = (Weather)msg.obj; String tStr = t_Weather.m_nTempF + “°F” +” (” + t_Weather.m_nTempC +”°C)”; SimpleDateFormat formater = new SimpleDateFormat(“yyyy.MM.dd”, Locale.KOREA); Date current = new Date(); String time = formater.format(current); location.setText(t_Weather.m_sRegion); date.setText(time); condition.setText(tStr); forecast.setText(t_Weather.m_sCurrentState); conditionImage.setImageResource(R.drawable.sun); break; } }; }; }
공유하기 글 요소 저작자표시
안드로이드를 본격적으로 공부 하면서 한번쯤은 간단히 날씨 앱을 만들어 보고자 했습니다.역시 처음부터 쉬운 건 없더군요ㅋ일단 기본 골격이라던지 알고리즘은 구글링을 통해서 참고 했습니다.참고한 사이트를 명시 해야 하는데 도통 어디서 레퍼런스 했는지 알 수가 없군요….ㅡㅡ;일단 기본 골격에 thread쪽을 공부 하면서 message 기반으로 구현을 해 보았네요실제 weather info를 가지고 오는 부분을 따로 thread로 나누어서 작업을 분산 시켰습니다.아래 코드 보시면서 참고 하시면 되겠네요차츰 업그레이드 시켜서 현재 위치를 기반으로 기상정보를 가지고 온다던지 도시 선택이 가능하게 한다는지 좀 더 신경써서 작업을 해봐야겠습니다. (UI도…^^)
플러터로 기상청 날씨 앱 만들기 일지 1. UI 디자인
UI 디자인 구상
UI 디자인의 이해
UI 디자인은 위젯을 배치하는 방식으로 이루어진다.
대강 위의 그림과 같이 위젯이 위젯을 감싸는 식으로 원하는 UI를 구현할 수 있다.
Container는 child를 하나밖에 가질 수 없고 Stack, Colun, Row는 child를 여러 개 가질 수 있다.
나는 mainAxisAlignment로 배치를 편하게 할 수 있도록 작은 컴포넌트까지 container로 감싸는 식으로 UI를 구현했다.
코드 분석
코딩셰프 강좌를 통해 만든 날씨앱을 활용하여 앱을 제작하기로 했으므로, 배운 코드를 활용하기 위해 우선 코드분석부터 했다.
(코드 링크: https://github.com/zlecoding/Flutter-app-weather_app)
파일 트리 구조
│ main.dart
│
├─data
│ my_location.dart
│ network.dart
│
├─model
│ model.dart
│
└─screens
loading.dart
weather_screen.dart
파일 구조
main.dart
home : loading.dart 파일의 Loading 위젯을 호출
loading.dart
Loading class : stateful widget initState(): 가장 처음 실행되는 함수. getLocation() 호출. getLocation() MyLocation myLoca tion = MyLocation (); ☞ 사용자의 위치 정보를 받아오기 위해 my_location.dart 파일의 MyLocation 클래스 인스 턴스를 생성. Network network = Network(날씨 api url, 미세먼지 api url); ☞파싱된 json데이터를 받아오기 위해 network.dart파일의 Networt 클래스 인스턴스를 생성. Navigator를 이용해 weather_screen.dart 파일의 WeatherScreen로 페이지 이동. 이동 시 getLocation()에서 생성된 날씨데이터와 미세먼지 데이터를 전달. Widget build: 로딩 인디케이터 위젯
: stateful widget
my_location.dart
MyLocation class : 현재 사용자의 위치 정보를 받아오는 클래스
network.dart
Networt class : 날씨와 미세먼지 데이터를 받아와 statusCode가 200일 때만 json을 파싱해서 리턴하는 클래스
weather_screen.dart
WeatherScreen class : stateful widget initState(): updateData() 호출 updateData(): 필요한 json 데이터를 변수에 저장 getSystemTime(): 현재 시각을 불러오는 메소드 Widget build: UI 구성 + UI에 필요한 데이터를 변수로 setup하여 화면에 출력
: stateful widget
model.dart
Model class W idget getWeatherIcon(): 날씨 상태를 수치화하여 해당하는 svg파일을 불러온다. Widget getAirIcon(): 미세먼지 상태를 수치화하여 해당하는 이미지 파일을 불러온다. Widget getAirCondition(): 수치화된 미세먼지 농도에 따라 미세먼지 상태를 나타내는 텍스트를 적절히 불러온다.
대강의 흐름은 아래와 같다.
loading(앱 실행시키자마자 내 위치 가져온 뒤 api에서 내 위치 관련 데이터 얻어오기) ▶ weather_screen(ui 구성해서 필요한 정보를 보여주도록 한다.)
loading ▶ network (내 위치 받아오기, 정상적으로 위치를 받아왔을 경우 해당 위치를 콘솔창에 출력하고 정상적으로 위치를 받아오지 못했을 경우에는 오류 메시지를 출력)
loading ▶ network (데이터 파싱 시 정상적인 출력일 경우 데이터를 리턴하고 아닐 경우 오류 메시지 출력)
weather_screen ▶ model (날씨 상태를 수치화하여 해당 수치에 부합하는 이미지 출력)
디자인 시작.
일요일 디자인 1차
1. 영상 따라하지 않고 혼자 해보려니 UI부터 힘겹다.
UI도 UI지만 안에 들어가는 아이콘들 찾아보고 오픈소스 라이선스 찾아보는 데 시간이 더 많이 걸렸다.
컨텐츠 구성에 시간이 더 많이 들어간다는 말은 정말 팩트…
2. 오픈소스 라이선스 고지에 관한 내용이 정말 없다. 검색해도 많이 안 나옴. 대체 긴 라이선스는 어떻게 넣는 건지ㅜㅜ
Navigator.of(context).push( MaterialPageRoute(builder: (_) => LicensePage()
위 코드를 사용하면 추가된 라이브러리들과 오픈소스들을 구글이 알아서 정리해 준다. 그런데 내가 추가할 수 있는 방법은 없는 건가? 찾아봐도 안 나와서 너무 답답하다…
☞ 해결
void initMyLibrary() { LicenseRegistry.addLicense(() async* { yield const LicenseEntryWithLineBreaks(
[‘추가할 라이센스 이름’], ”’ 라이센스 내용… ”’); }); } 위와 같이 표기해서 함수를 실행시키면 라이센스 페이지에 내가 원하는 라이센스를 표기할 수 있다. 그런데 이제 문제는 지우는 법을 모르겠다…
하나 추가했다가 실패해서
LicenseRegistry.reset();
했더니 이전 라이센스 표기들이 다 날아갔다. 다시 복원해 보려다가 포기하고 새로 오픈소스들 표기해서 함수를 실행해 라이센스 목록에 내가 추가하고 싶은 사항들을 추가했다.
일요일 디자인 2차(완성)
디자인을 계속 변경했다.
본격적으로 값을 연결하면서 디자인은 더 바뀔 것 같다.
참고한 사이트 목록
배경화면 만들기 사이트
https://coolbackgrounds.io/
아이콘 사이트
https://orioniconlibrary.com/
배경화면 사이트
https://unsplash.com/
So you have finished reading the 날씨 앱 만들기 topic article, if you find this article useful, please share it. Thank you very much. See more: 무료날씨앱, 날씨앱 추천, 구글날씨앱, 정확한 날씨 앱 추천, 기상청날씨앱, 광고없는 날씨앱, 오늘날씨, 메신저 앱 만들기