이번 시간에는 6강 데이터베이스의 네번째 강의인 '인터넷 연결상태 확인하기' 리뷰입니다.
개념을 알아보면서 실습한 내용을 덧붙여 알아보도록 하겠습니다!
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
단말기에서 인터넷이 되는 상태를 아닌지를 구분하는데에는 시스템 서비스 객체 중 ConnectivityManager 객체를 사용합니다.
또한, 시스템 서비스 객체를 참조할 때는 getSystemService 메소드를 사용합니다.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<Button
android:id="@+id/button"
android:layout_width="194dp"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:text="연결상태체크" />
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="106dp"
android:layout_marginTop="0dp"
android:text="대기중"
android:textSize="50dp" />
</LinearLayout>
</android.support.constraint.ConstraintLayout>
AndroidManifest.xml
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
NetworkStatus.java
package com.example.myconnect;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
public class NetworkStatus {
// 연결 상태를 정의
public static final int TYPE_WIFI = 1;
public static final int TYPE_MOBILE = 2;
public static final int TYPE_NOT_CONNECTED = 3;
public static int getConnectivityStatus(Context context){
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
// 권한 필요
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
if(networkInfo != null){
// 3G나 LTE로 연결되었는지, 와이파이로 연결되었는지 구분
int type = networkInfo.getType();
// ConnectivityManager 객체의 getActiveNetworkInfo 메소드를 호출하면 NetworkInfo 객체가 반환되고 그 안에 상태 정보가 있음
if(type == ConnectivityManager.TYPE_MOBILE){
return TYPE_MOBILE;
}else if(type == ConnectivityManager.TYPE_WIFI){
return TYPE_WIFI;
}
}
return TYPE_NOT_CONNECTED;
}
}
연결상태를 확인하는 경우가 자주 생길 때를 대비하여 하나의 클래스로 정의하고,
NetworkStatus라는 이름의 클래스를 만들고 그 안에 세 가지 상태를 상수로 정의합니다.
MainActivity.java
package com.example.myconnect;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.textView);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
int status = NetworkStatus.getConnectivityStatus(getApplicationContext());
if (status == NetworkStatus.TYPE_MOBILE){
textView.setText("모바일로 연결됨");
}else if(status == NetworkStatus.TYPE_WIFI){
textView.setText("와이파이로 연결됨");
}else{
textView.setText("연결 안됨");
}
}
});
}
}
코드에 대한 설명은 주석으로 달아놨으니 천천히 읽어보시면 될 것 같습니다.
위 코드에 대한 결과 화면은 아래와 같습니다.
단말기의 상태를 보시면 4G로 인터넷에 연결되어 있습니다.
와이파이로 연결된 것이 아니니 '모바일로 연결됨'이 출력되었네요.
글 읽어주셔서 감사합니다 :)
'안드로이드' 카테고리의 다른 글
[Android] 7. 멀티미디어 - 음악 재생하기 (0) | 2019.09.06 |
---|---|
[Android] 7. 멀티미디어 - 사진 찍어 저장하기 (0) | 2019.09.04 |
[Android] 6. 데이터베이스 - 헬퍼 사용하기 (0) | 2019.08.15 |
[Android] 6. 데이터베이스 - 데이터 추가하고 조회하기 (0) | 2019.08.10 |
[Android] 6. 데이터베이스 - 데이터베이스 이해하기 (0) | 2019.08.10 |
댓글