안녕하세요 열코입니다.

오늘은 안드로이드 앱에서 진동 사용하는 방법에 대해 알아보겠습니다.

이 진동 기능은 사용자에게 어떤 알림을 직관적으로 주기 위해 사용하는데요.

보통 기존에 앱에서는 소리와 진동을 함께 줌으로써 사용자에게 알림 확인을 극대화시킵니다.

따라서 이 진동 기능은 앱 개발에서 꼭 필요한 기능이라고 할 수 있습니다.

그렇다면 안드로이드 앱에서 진동 기능을 어떻게 구현하는지에 대해 알아보겠습니다.


다른 기능도 마찬가지지만 안드로이드에서 제공하는 기본적인 기능(카메라, 와이파이 등)을

사용하기 위해서는 권한이 필요합니다.

이 진동(Vibrate) 기능을 사용하기 위해서도 마찬가지인데요.


※ 진동 기능을 사용하기 위해 안드로이드 권한 얻는법

방법은 아주 간단합니다.

AndroidManifest.xml에 다음과 같은 코드를 추가합니다.

<uses-permission android:name="android.permission.VIBRATE" />


자 이제 안드로이드 앱에서 진동기능을 사용하기 위한 과정이 모두 끝났습니다.

정말 간단하죠?


이제 실제로 프로그램내에서 진동 기능을 사용하기 위한 방법에 대해 알아보겠습니다.

먼저 첫번째로 Vibrator 객체를 만들어주어야합니다.


진동 기능을 사용하려고 하는 코드쪽이나 클래스 상단부분에 다음과 같이 선언합니다.

private Vibrator vibrator;


다음 진동기능을 사용하려는 코드쪽에서 vibrator 객체를 다음과 같이 정의합니다.

 vibrator = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE);


이제 vibrator 객체를 통해 진동을 발생시키기만 하면 됩니다.

안드로이드에서 제공하는 Vibrator 객체의 진동 발생 방법은 두가지가 있습니다.

첫번째는 지정된 시간동안 진동하는 방법이고

두번째는 지정된 패턴으로 진동하는 방법입니다.


먼저 첫번째, 지정된 시간동안 진동하는 방법에 대해 알아보겠습니다.

vibrator.vibrate(1000); // 1초간 진동


이렇게 하면 끝입니다.

프로그램이 작동되다가 해당 코드를 만나면 1초간 진동이 발생합니다.

여기서 vibrate 함수의 매개변수로 1000을 주었는데,

이는 단위가 milisecond인 int형 매개변수로써, 1000 ms = 1s 입니다.

0.5초간 진동을 주고싶다면 1000대신 500을 입력하면 됩니다.



두번째로, 지정된 패턴으로 진동하는 방법입니다.

두번째 방법은 미리 패턴을 다음과 같이 지정 해 주어야합니다.

long[] pattern = {1000, 50, 1000, 50}; // 1초 진동, 0.05초 대기, 1초 진동, 0.05초 대기

vibrator.vibrate(pattern, -1);


위와같이 패턴을 설정할 때에는 진동, 대기, 진동, 대기... 이런 순으로 지정해주시면 됩니다.

만약 1초간 진동을 3번 울리고 싶으시면 3번 반복하시면 됩니다.

두번째 매개변수인 -1은 반복하지 않겠다는 설정입니다.

다시 말해 지정된 패턴동안 진동을 단 1번만 발생시키겠다는 뜻입니다.


만약 두번째 매개변수를 0으로 준다면 진동은 지정된 패턴으로 무한으로 진동하게 됩니다.

이를 멈추게 하기위해서는 다음과 같은 코드를 추가합니다.

vibrator.cancel();


추가로 단말기의 기본 알림음을 발생시키는 코드를 추가하여 진동+소리로 알릴 수 있습니다

Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);

Ringtone ringtone = RingtoneManager.getRingtone(getApplicationContext(), uri);

ringtone.play();



android vibrator에 대해 더 궁금하신 사항은 여기를 클릭하세요.


이상 '안드로이드 진동 기능 사용법'에 대해 알아보았습니다.

질문 또는 오타나 잘못된 정보가 있는 경우 댓글로 달아주세요!

공감♡ 버튼을 눌러주시면 더욱 유용하고 좋은 포스팅으로 찾아 뵙겠습니다.






안녕하세요. 열코입니다.

파이썬은 간결하고 높은 가독성으로 프로그래머들에게 선호되는 언어 중 하나입니다.

이번 시간에는 파이썬 프로그래머를 위해 최대한 간단한 코딩 방법에 대해 소개합니다.

시작하겠습니다!!


1. 두 변수 값 교환(Swap)

파이썬에서는 별도의 Swap 함수를 제공하는것이 아닌 기본적인 문법으로 제공합니다.

x = 10

y = 20

x, y = y, x


print(x, y) # 20 10 출력


2. 문자열 역순 출력(Reverse, 반전)

파이썬 리스트를 역순으로 출력하는것과 같은 코드와 원리입니다.

str = "열코의 프로그래밍 일기"

str_reverse = str[ : : -1]


print(str_reverse) # 기일 밍래그로프 의코열 출력



3. 리스트 요소를 단일 문자열로 만들기

myList = ["열코", "프로그래밍"]

print(", ".join(myList)) # 열코, 프로그래밍 출력

# " " 안에 문자열을 이용하여 구분지을 수 있습니다.


4. 비교 연산자 2개 사용 

여타 프로그래밍 언어에서 두개 이상의 비교 연산자를 사용할 수 없었습니다.

아래와 같은 코드를 구현하기 위해서는 



if(1 < num && num < 20) 이런식으로 구현했어야 했던것을

파이썬은 아래 코드와 같이 직관적이고 가독성 높은 코드를 사용할 수 있습니다.

num = 10

if 1 < num < 20 :

    print("YES") # YES 출력

else :

    print("NO")


5. 함수의 여러값 반환

기존의 함수에서는 return(반환) 값이 무조건 1개 또는 없었는데 파이썬에서는

값을 여러개를 반환 할 수 있는 기능을 제공합니다.

def x() :

    return 1, 2, 3


a, b, c = x() 

print(a, b, c) # 1 2 3 출력



6. 리스트의 값 여러 변수에 대입

myList = [ 1, 2, 3 ]


x, y, z = myList


print(x, y, z) # 1 2 3 출력


7. import한 모듈의 경로 알아내기

import os


print(os) # <module 'os' from 'C:\\Python\\Python36-32\\lib\\os.py'> 모듈의 경로 출력


8. 중단점 설정을 통해 스크립트 디버깅

import pdb


x = 1 + 2


pdb.set_trace() # 중단점 설정


# > c:\pycharmprojects\untitled2\help.py(7)<module>()

# -> print(x)

# (Pdb) 


print(x)


9. 객체의 메소드 확인

myList = [ 1, 2, 3, 4 ]


print(dir(myList))


# ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__',

# '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', 

# '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', 

# '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', 

# '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 

# 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

# 출력


10. 두개의 튜플로 딕셔너리 만들기

tuple1 = (1, 2, 3)

tuple2 = (10, 20, 30)


dict1 = dict((zip(tuple1, tuple2)))


print(dict1) # {1: 10, 2: 20, 3: 30} 출력




이상 '파이썬 간단하게 코딩하기'에 대해 알아보았습니다.

질문 또는 오타나 잘못된 정보가 있는 경우 댓글로 달아주세요!

공감♡ 버튼을 눌러주시면 더욱 유용하고 좋은 포스팅으로 찾아 뵙겠습니다.





안드로이드앱 개발중 뜬금없이 프로젝트가 실행되지 않았다.

Run App을 눌러봐도 다음과 같은 오류만 나올 뿐


Error: Activity class { ... } does not exist.


전혀 실행되지 않았다.


프로젝트를 처음 실행하면 앱이 하나 생성되는데,

USB를 컴퓨터에 연결한 상태에서 앱을 삭제했기 때문에

발생하는 문제였다.

위와 같은 오류가 나는 이유는 ADB는 앱이 휴대폰에 있는걸로 인식하기 때문이다.


해결방법은 다음과 같다.

설정에 들어가면 저장소(Storage)가 있는데 해당 앱 이름을 찾아서 삭제해주면 된다.






혹시 다른 문제가 발생한 유저들을 위해

앱을 삭제하지 않았는데 위와 같은 오류가 발생했을 시 해결방안


1. 안드로이드 스튜디오에서 상단 메뉴에 build - Clean Project 클릭, rebuild project 클릭 후 실행


2. 해당 프로젝트 코드를 모두 백업하고 프로젝트 삭제 후 새로 만들어서 사용


3. build.gradle에 다음과 같이 코드 추가

android {
defaultConfig {
    applicationId "패키지명"  
  }
}


4. AndroidManifest.xml에서 다음과 같이 변경

<activity android:name="패키지명.액티비티명" >



위 4가지 방법을 모두 사용해봐도 문제가 해결되지 않을 시 댓글로 문의주세요.





이번 시간에는 파이썬의 Set 자료형에 대해 알아볼건데요.

Set는 한글로 집합입니다. 중학교 수학시간에 집합이라고 배우죠?

네 맞습니다 바로 그 집합입니다. 실제로 집합이 필요한 상황에서 적절히 

사용할 수 있는 자료형입니다. Set 자료형에는 몇가지 특징이 있는데요.

그 특징은 다음과 같습니다.


♣ Set 자료형의 특징

1. 중복이 없다. (Not Duplication)

2. 순서가 없다. (Unordered)


그렇다면 이제 파이썬에서 Set 자료형을 사용하는 방법에 대해 알아보겠습니다.


♣ Set 자료형의 선언

Set 자료형을 사용하기 위해 다음과 같이 선언할 수 있습니다.

예제 코드)

set1 = set([1, 2, 3]) # {1, 2, 3} 출력

set2 = {4, 5, 6} # {4, 5, 6} 출력

set3 = set("Hello") # {'e', 'H', 'o', 'l'} 출력

set4 = frozenset([1, 2, 3]) # frozenset({1, 2, 3}) 출력

Set 자료형을 선언할 때에는 set([ ]) 또는 { } 기호를 사용하실 수 있습니다.

여기서 set3을 보시면 {'e', 'H', 'o', 'l'}이 출력되는 것을 볼 수 있는데

Set 자료형의 특징을 잘 보여주고 있네요. (중복 및 순서가 없음)

frozenset은 선언 후 변경 할 수 없는 집합입니다. (튜플과 비슷하네요)


♣ Set 자료형의 내부 함수

Set 자료형에도 여러가지 내부 함수가 존재하여 추가 삭제 및 여러가지 연산을 지원합니다.

Set 자료형의 내부함수에는 다음과 같은 함수들이 존재합니다.


- add() : 집합에 요소를 추가합니다.

예제 코드)

set1 = set([1, 2, 3]) # {1, 2, 3} 출력

set1.add(4) # {1, 2, 3, 4} 출력


- update() : 해당 집합에 다른 집합을 추가합니다.

직접 집합을 작성하여 추가하거나 다른 집합을 추가 할 수 있습니다.

예제 코드)

set1 = set([1, 2, 3]) 

set1.update([4, 5, 6]) # {1, 2, 3, 4, 5, 6} 출력

set2 = {7, 8, 9}

set1.update(set2) # {1, 2, 3, 4, 5, 6, 7, 8, 9} 출력


- remove() : 집합에 해당 요소를 제거합니다.

예제 코드)

set1 = set([1, 2, 3])

set1.remove(3) # {1, 2} 출력


- clear() : 집합 내에 모든 요소를 제거합니다.

예제 코드)

set1 = set([1, 2, 3])

set1.clear() # set() 출력(빈 집합)



- union() : 집합들의 합집합을 구합니다. 또한 | 연산자를 사용할 수 있습니다.

예제 코드)

set1 = set([1, 2, 3])

set2 = set([3, 4, 5])


set3 = set1.union(set2) # {1, 2, 3, 4, 5} 출력, set1 | set2 과 같음


- intersection() : 집합들의 교집합을 구합니다. 또한 & 연산자를 사용할 수 있습니다.

예제 코드)

set1 = set([1, 2, 3])

set2 = set([2, 3, 4])

set3 = set([1, 2, 5])


set4 = set1.intersection(set2).intersection(set3) # {2} 출력, set1 & set2 & set3 과 같음


- difference() : 집합들의 차집합을 구합니다. 또한 - 연산자를 사용할 수 있습니다.

예제 코드)

set1 = set([1, 2, 3])

set2 = set([2, 3, 4])


set3 = set1.difference(set2) # {1} 출력, set1 - set2와 같음


이상 '파이썬 set 자료형'에 대해 알아보았습니다.

질문 또는 오타나 잘못된 정보가 있는 경우 댓글로 달아주세요!

공감♡ 버튼을 눌러주시면 더욱 유용하고 좋은 포스팅으로 찾아 뵙겠습니다.



'Python' 카테고리의 다른 글

파이썬 파일 입출력  (0) 2018.10.06
파이썬 난수(random) 생성  (0) 2018.09.24
파이썬으로 이메일 보내기(SMTP)  (10) 2018.09.22
파이썬 간단하게 코딩하기  (2) 2018.09.19
파이썬 튜플(Tuple) 사용법  (0) 2018.09.16
파이썬 리스트 사용법2 - 활용  (0) 2018.09.15
파이썬 리스트 사용법  (0) 2018.09.14
파이썬 DB연동 - PyMySQL + MySQL  (1) 2018.08.18



푸시알림이 아닌 앱 자체에서 알림을 발생


시키고 싶을 땐 Notification을 사용하면 


됩니다.


다음 코드를 통해 간단하게 작성가능합니다.




NotificationManager notificationManager;


PendingIntent intent;



먼저 NotificationMangerPendingIntent 객체를 하나씩 선언해줍니다.


NotificationManger는 notification(상태알림창의 알림)을 사용하기 위한 객체이며,


PendingIntent는 notification을 상태알림창에 띄울 intent를 뜻합니다.



가장 간단한 테스트로 onCreate 함수 내에 코드를 작성했습니다.


PendingIntent 객체인 intent는 다음과 같이 정의합니다.



intent = PendingIntent.getActivity(this, 0, new Intent(getApplicationContext(), MainActivity.class),

PendingIntent.FLAG_UPDATE_CURRENT);



Notification 내용을 설정하기 위해 Notifiaction.Builder를 이용하여 빌더를 만들어줍니다.



Notification.Builder builder = new Notification.Builder(this)

                .setSmallIcon(R.drawable.ic_launcher_background) // 아이콘 설정하지 않으면 오류남

                .setDefaults(Notification.DEFAULT_ALL)

                .setContentTitle("알림 제목") // 제목 설정

                .setContentText("알림 내용") // 내용 설정

                .setTicker("한줄 출력") // 상태바에 표시될 한줄 출력

                .setAutoCancel(true)

                .setContentIntent(intent);



제목, 내용 등을 다양하게 설정할 수 있습니다. 


이상하게도 아이콘을 설정해 주지않으면 오류가 나오는것을 확인할 수 있었습니다.


그래서 기본 아이콘 아무거나 가져와서 사용했습니다....



다음은 notificationManger 변수를 다음과 같이 정의해줍니다.



notificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);

notificationManager.notify(0, builder.build());



자 이것으로 알림(Notification) 기능 설정이 모두 끝났습니다.


테스트 코드는 onCreate함수에 모두 집어넣었기 때문에 프로그램 실행 시 바로 알림이 


뜨는것을 확인할 수 있었습니다.





Notification 예제 - 전체 코드입니다.


import android.app.Notification;

import android.app.NotificationManager;

import android.app.PendingIntent;

import android.content.Intent;

import android.os.Build;

import android.support.annotation.RequiresApi;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;


public class MainActivity extends AppCompatActivity {

    NotificationManager notificationManager;

    PendingIntent intent;


    @RequiresApi(api = Build.VERSION_CODES.M)

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);


        intent = PendingIntent.getActivity(this, 0,

                new Intent(getApplicationContext(), MainActivity.class), PendingIntent.FLAG_UPDATE_CURRENT);


        Notification.Builder builder = new Notification.Builder(this)

                .setSmallIcon(R.drawable.ic_launcher_background) // 아이콘 설정하지 않으면 오류남

                .setDefaults(Notification.DEFAULT_ALL)

                .setContentTitle("알림 제목") // 제목 설정

                .setContentText("알림 내용") // 내용 설정

                .setTicker("한줄 출력") // 상태바에 표시될 한줄 출력

                .setAutoCancel(true)

                .setContentIntent(intent);


        notificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);

        notificationManager.notify(0, builder.build());

    }

}





이상 '안드로이드 notification 사용법'에 대해 알아보았습니다.


질문 또는 오타나 잘못된 정보가 있는 경우 댓글로 달아주세요!


공감♡ 버튼을 눌러주시면 더욱 유용하고 좋은 포스팅으로 찾아 뵙겠습니다.






to Top