Android

Volley 라이브러리

  implementation ‘com.android.volley:volley:1.1.1’     <uses-permission android:name=”android.permission.INTERNET”/>       public class RegisterRequest extends StringRequest { final static private String URL = “Register.php”; private Map<String, String> map; public RegisterRequest(String user, String age, Response.Listener listener) { super(Method.POST, URL, listener, null); map = new HashMap<>(); map.put(“user”,user); map.put(“age”, age); } @Override protected Map<String, String> getParams() throws AuthFailureError { return map; }     Response.Listener<String> responseListener = new Response.Listener<String>() { @Override public void onResponse(String response) { try { JSONObject jsonObject = new JSONObject(response); boolean success = jsonObject.getBoolean(“success”); } catch (JSONException e) { e.printStackTrace(); }…

Read More
Android

BroadcastReceiver

  와이파이 상태 체크       NetworkReceiver.java   public class NetworkReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // 네트워크 상태 값 받아오기 if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(intent.getAction())) { NetworkInfo info = (NetworkInfo) intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO); NetworkInfo.DetailedState state = info.getDetailedState(); if (state == NetworkInfo.DetailedState.CONNECTED) { // 네트워크 연결 상태이면… MainActivity.tv_state.setText(“네트워크 연결 완료”); } else if (state == NetworkInfo.DetailedState.DISCONNECTED) { // 네트워크 연결 해제이면.. MainActivity.tv_state.setText(“네트워크 연결 해제”); } } } }     MainActivity.java   public class MainActivity extends AppCompatActivity { public static TextView tv_state; private NetworkReceiver receiver; @Override protected void…

Read More
Android

Selector

  셀렉터를 이용해서 버튼을 눌렀을 때 버튼의 백그라운드를 바꿀 수 있다.     1번 버튼 (버튼의 백그라운드 색상) android:background=”@drawable/selector_button”   2번 버튼 (버튼의 백그라운드 이미지) android:background=”@drawable/selector_button_img”     drawable/selector_button.xml   <selector xmlns:android=”http://schemas.android.com/apk/res/android”> <item android:state_pressed=”true”> <shape> <solid android:color=”#8A9AF8″/> <corners android:radius=”10dp”/> </shape> </item> <item android:state_pressed=”false”> <shape> <solid android:color=”#536DFE”/> <corners android:radius=”10dp”/> </shape> </item> </selector>       drawable/selector_button_img.xml   <selector xmlns:android=”http://schemas.android.com/apk/res/android”> <item android:state_pressed=”true” android:drawable=”@drawable/ic_baseline_comment_24″ /> <item android:state_pressed=”false” android:drawable=”@drawable/ic_baseline_emoji_events_24″ /> </selector>       안드로이드 앱 만들기 #27 Selector https://www.youtube.com/watch?v=9E0WwR_6P9w   홍드로이드 깃헙 https://github.com/hongdroid94/27_Selector  

Read More
Android

StartActivityForResult

      SubActivity.java   public class SubActivity extends AppCompatActivity { private EditText et_comeback; private Button btn_close; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sub); et_comeback = findViewById(R.id.et_comeback); btn_close = findViewById(R.id.btn_close); btn_close.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(); intent.putExtra(“comeback”, et_comeback.getText().toString()); // 입력폼에 적은 값 담아주기 setResult(RESULT_OK, intent); // 결과 값 설정 finish(); // 현재 액티비티 종료 } }); } }       <LinearLayout 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=”.SubActivity”> <EditText android:id=”@+id/et_comeback” android:layout_width=”wrap_content” android:layout_height=”wrap_content” android:hint=”Main으로 보낼 값 입력해주세요.”/> <Button android:id=”@+id/btn_close” android:layout_width=”wrap_content” android:layout_height=”wrap_content” android:text=”종료”/>…

Read More
Android

Bottom Navigation View

          dependencies { implementation ‘com.google.android.material:material:1.1.0’ }     drawable 디렉토리에 Vector Asset 5개를 추가한다. res/menu 폴더를 만들고 bottom_menu.xml 파일을 만든다. <menu xmlns:android=”http://schemas.android.com/apk/res/android”> <item android:id=”@+id/action_airplane” android:enabled=”true” android:icon=”@drawable/ic_baseline_flight_24″ android:title=”비행기”/> <item android:id=”@+id/action_airport” android:enabled=”true” android:icon=”@drawable/ic_baseline_filter_drama_24″ android:title=”버스”/> <item android:id=”@+id/action_bt” android:enabled=”true” android:icon=”@drawable/ic_baseline_emoji_events_24″ android:title=”블루투스”/> <item android:id=”@+id/action_call” android:enabled=”true” android:icon=”@drawable/ic_baseline_drive_eta_24″ android:title=”전화”/> <item android:id=”@+id/action_run” android:enabled=”true” android:icon=”@drawable/ic_baseline_comment_24″ android:title=”사람”/> </menu>       frag1.xml 부터 frag5.xml 까지 5개를 만든다.   <LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android” android:layout_width=”match_parent” android:layout_height=”match_parent”> <TextView android:layout_width=”wrap_content” android:layout_height=”wrap_content” android:text=”1번화면 입니다.” android:textSize=”40sp”/> </LinearLayout>       activity_main.xml   <?xml version=”1.0″ encoding=”utf-8″?> <androidx.constraintlayout.widget.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”> <com.google.android.material.bottomnavigation.BottomNavigationView android:id=”@+id/bottomNavi”…

Read More
Android

구글 맵

  Google Developers Console 사이트에서 프로젝트를 만들고 API 키를 가져온다. https://console.developers.google.com/apis/dashboard     윈도우에서 SHA-1 인증서 지문 얻기 “C:\Program Files\Android\Android Studio\jre\bin\keytool” -list -v -keystore “%USERPROFILE%\.android\debug.keystore” -alias androiddebugkey -storepass android -keypass android     AndroidManifest.xml 에 메타데이터 추가 <application <meta-data android:name=”com.google.android.geo.API_KEY” android:value=”API 키 값” /> </application>     dependencies { implementation ‘com.google.android.gms:play-services-maps:17.0.0’ implementation ‘com.google.android.gms:play-services-location:17.0.0’ }       public class MainActivity extends AppCompatActivity implements OnMapReadyCallback { FragmentManager fragmentManager; SupportMapFragment mapFragment; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); fragmentManager = getSupportFragmentManager(); mapFragment = (SupportMapFragment) fragmentManager.findFragmentById(R.id.googleMap); mapFragment.getMapAsync(this); } @Override public void onMapReady(GoogleMap…

Read More
Android

ConstraintLayout

        Build a Responsive UI with ConstraintLayout  – Android Develpoers https://developer.android.com/training/constraint-layout   Constraint Layout – Part1. 만능 레이아웃 https://www.charlezz.com/?p=669   Constraint Layout – Part2. 뷰의 배치를 돕는 가상 오브젝트 https://www.charlezz.com/?p=691   안드로이드 앱 만들기 #33 Constraint Layout https://www.youtube.com/watch?v=2zBgR3toNwI    

Read More
Android

뒤로가기 두번 눌러 앱 종료

    public class MainActivity extends AppCompatActivity { private long backBtnTime = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public void onBackPressed() { long curTime = System.currentTimeMillis(); long gapTime = curTime – backBtnTime; if(0 <= gapTime && 2000 >= gapTime) { super.onBackPressed(); } else { backBtnTime = curTime; Toast.makeText(this, “한번 더 누르면 종료됩니다.”,Toast.LENGTH_SHORT).show(); } } }     https://www.youtube.com/watch?v=3jiQGrjOgMM   https://github.com/hongdroid94/23_BackButton  

Read More
Android

Spinner

    MainActivity.java   private Spinner spinner; private TextView tv_result; spinner = (Spinner)findViewById(R.id.spinner); tv_result = (TextView)findViewById(R.id.tv_result); spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { tv_result.setText(parent.getItemAtPosition(position).toString()); } @Override public void onNothingSelected(AdapterView<?> adapterView) { } });     values/arrays.xml     <resources> <string-array name=”string_array”> <item>월요일</item> <item>화요일</item> <item>수요일</item> <item>목요일</item> </string-array> </resources>       activity_main.xml     <Spinner android:layout_width=”150dp” android:layout_height=”40dp” android:id=”@+id/spinner” android:entries=”@array/string_array” /> <TextView android:id=”@+id/tv_result” android:layout_width=”wrap_content” android:layout_height=”wrap_content” />       arrays.xml   <?xml version=”1.0″ encoding=”utf-8″?> <resources> <string-array name=”string_array”> <item>월요일</item> <item>화요일</item> <item>@string/wednesday</item> <item>@string/thursday</item> </string-array> <integer-array name=”integer_array”>…

Read More
Android

MP3 음악 재생

    MediaPlayer mediaPlayer;     플레이 버튼 눌렀을 때   mediaPlayer = MediaPlayer.create(MainActivity.this, R.raw.music); mediaPlayer.start();     정지 버튼 눌렀을 때   if(mediaPlayer.isPlaying()) { mediaPlayer.stop(); mediaPlayer.reset();     onDestroy() 일 때   if(mediaPlayer != null) { mediaPlayer.release(); mediaPlayer = null; }       안드로이드 앱 만들기 #22 (음악재생 MP3) – 홍드로이드 https://www.youtube.com/watch?v=-jTbUeTSAYU    

Read More