記錄

사용자 알림 효과 -진동울리기, 알림음 본문

Mobile/Android

사용자 알림 효과 -진동울리기, 알림음

surhommejk 2018. 1. 13. 23:35

진동울리기 과정

1) AndroidManifest.xml에서 퍼미션을 설정한다

2) .xml로 activity 작성

3) .java로 이벤트 처리



AndroidManifest.xml에서 퍼미션 처리

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.kimjungkwon.layouttestlast">

<uses-permission android:name="android.permission.VIBRATE"/>
// 여기 이렇게 단 한 줄이면 해당 어플이 진동에 대한 퍼미션을 획득

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>





.xml로 Activity 작성(특별할 것이 하나도 없다)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<Button
android:id="@+id/vibration"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Vibration"/>


<Button
android:id="@+id/systembeep"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="system beep"/>


<Button
android:id="@+id/custombeep"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="custom beep"/>

</LinearLayout>





.java

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
// 클릭시 이벤트 처리를 위해서
// implements View.OnClickLister했고
// 이에 따라 abstract method인
// onClick을 구현해주어야 컴파일 가능
Button vbbt;
Button sbbt;
Button ctbbt;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

vbbt = (Button) findViewById(R.id.vibration);
sbbt = (Button) findViewById(R.id.systembeep);
ctbbt = (Button) findViewById(R.id.custombeep);

vbbt.setOnClickListener(this); // 기본적인 버튼 이벤트 처리
sbbt.setOnClickListener(this);
ctbbt.setOnClickListener(this);
}

@Override
public void onClick(View v) {

if(v == vbbt){
Vibrator vib = (Vibrator)getSystemService(VIBRATOR_SERVICE);
vib.vibrate(1000);
// Vibrator를 만들어서 1000밀리 세컨드(1초) 진동
// vib.vibrate(new long[]{500, 1000, 500, 1000}, -1)으로 할 경우
// 홀수: 대기시간, 짝수: 진동시간, 0: 무한진동 until cancel, -1: 한번만 패턴대로 진동
} else if (v == sbbt){
Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Ringtone ringtone = RingtoneManager.getRingtone(getApplicationContext(), notification);
ringtone.play();
// 책에서 아주 무책임하게도 아무런 설명이 없다. 일단 스킵.
// 알림음은 그냥 이런 방식이라는 것만 알아두자

} else if (v == ctbbt){
MediaPlayer player = MediaPlayer.create(this,R.raw.nel);
// 여기서 nel은 내가 raw 폴더에 넣어둔 .ogg여야만 한다.
}
}
}



Comments