아래 그림과 같이 EditText(TextView)에 이미지를 추가하고 싶을 때가 있다. 

 

 그럴 때 다음과 같이 xml 파일의 EditText 태그에서 drawbleStart(왼쪽에 이미지 추가), drawbleEnd(오른쪽에 이미지 추가) 속성을 추가한 다음 원하는 이미지를 등록함으로써 해결할 수 있다. 또한, drawblePadding 속성을 추가하여 이미지와 텍스트 사이에 거리를 줄 수 있다.

<EditText
android:layout_width="300dp"
android:layout_height="wrap_content"
android:hint="WiFi 선택"
android:inputType="text"
android:drawableStart="@drawable/ic_wifi"
android:drawableEnd="@drawable/ic_next"
android:drawablePadding="10dp"/>

'Android' 카테고리의 다른 글

[Android Kotlin] 음성 녹음  (0) 2019.10.04
[Android Kotlin] MobileFFmpeg 사용법  (0) 2019.09.25

안드로이드에서 음성 녹음 기능을 사용해보자.

 

먼저 AndroidManifest.xml에 다음 권한을 추가한다.

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

 

그리고 res/layout/activity_main.xml에 다음과 같이 입력한다.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/textview_sound_recorder_heading"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="음성 녹음"
        android:layout_centerHorizontal="true"
        android:textSize="32dp"
        android:textStyle="bold"
        android:textColor="#000"
        android:layout_marginTop="32dp"
        />

    <Button
        android:id="@+id/button_start_recording"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="시작"
        android:layout_alignParentBottom="true"
        android:layout_marginLeft="32dp"
        android:layout_marginBottom="32dp"
        android:layout_centerVertical="true"/>

    <Button
        android:id="@+id/button_pause_recording"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="정지"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="32dp"/>

    <Button
        android:id="@+id/button_stop_recording"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="중지"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_marginBottom="32dp"
        android:layout_marginRight="32dp"/>
    
</RelativeLayout>

 

그리고 MainActivity.kt 파일에 다음과 같이 입력한다.

package com.example.audio

import android.Manifest
import android.media.MediaRecorder
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.Environment
import android.widget.Toast
import androidx.core.app.ActivityCompat
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

    private var mediaRecorder: MediaRecorder? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        var state = false
        var recordingStopped = false

        val output = "${Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)}" + "/test.mp3"

        val permissions = arrayOf(Manifest.permission.RECORD_AUDIO, Manifest.permission.WRITE_EXTERNAL_STORAGE)
        ActivityCompat.requestPermissions(this, permissions,0)

        button_start_recording.setOnClickListener {
            mediaRecorder = MediaRecorder()

            mediaRecorder?.setAudioSource(MediaRecorder.AudioSource.MIC)
            mediaRecorder?.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4)
            mediaRecorder?.setAudioEncoder(MediaRecorder.AudioEncoder.AAC)
            mediaRecorder?.setOutputFile(output)

            mediaRecorder?.prepare()
            mediaRecorder?.start()

            state = true

            Toast.makeText(this, "녹음 시작", Toast.LENGTH_SHORT).show()
        }

        button_stop_recording.setOnClickListener{
            if(state){
                mediaRecorder?.stop()
                mediaRecorder?.release()

                state = false

                Toast.makeText(this, "녹음 중지", Toast.LENGTH_SHORT).show()
            }
        }

        button_pause_recording.setOnClickListener {
            if (state) {
                if (!recordingStopped) {
                    Toast.makeText(this, "녹음 정지", Toast.LENGTH_SHORT).show()
                    mediaRecorder?.pause()
                    recordingStopped = true
                    button_pause_recording.text = "다시 시작"
                } else {
                    Toast.makeText(this,"다시 시작", Toast.LENGTH_SHORT).show()
                    mediaRecorder?.resume()
                    recordingStopped = false
                    button_pause_recording.text = "정지"
                }
            }
        }
    }
}

 

※ 주의할 점으로 중지, 다시 시작 기능 즉, 위의 코드에서 mediaRecorder?.pause()와 mediaRecorder?.resume()

안드로이드 SDK 버전이 24 이상이어야 사용할 수 있다.

 

 

참고사이트

 

https://android.jlelse.eu/create-an-android-sound-recorder-using-kotlin-36902b3bf967

'Android' 카테고리의 다른 글

[Android] EditText에 이미지 추가  (0) 2019.10.27
[Android Kotlin] MobileFFmpeg 사용법  (0) 2019.09.25

 안드로이드에서 FFmpeg를 사용할 필요가 있어서 사용법을 검색해봤는데 대부분 NDK를 이용해서 FFmpeg를 빌드하여 FFmpeg를 사용했다.

 

 물론 이렇게 하면 FFmpeg를 사용할 수 있지만 생각보다 간단하지는 않다. 그래서 간단하게 사용할 수 있는 방법을 찾아보았는데 아래 사이트에서 모바일에서 사용할 수 있는 FFmpeg라이브러리인 MobileFFmpeg를 만들어놓았다.

 

https://github.com/tanersener/mobile-ffmpeg

 

사용법은 간단하다.

 

먼저 build.gradle(Module: app)에 아래와 같이 추가한다.

dependencies {
    implementation 'com.arthenica:mobile-ffmpeg-full:4.2.2'
}

 

※ 만약 SDK 버전이 23 이하라면 아래와 같이 추가한다.

dependencies {
    implementation 'com.arthenica:mobile-ffmpeg-full:4.2.2.LTS'
}

 

이제 사용하고자 하는 곳에 아래와 같이 라이브러리를 추가하고 함수를 사용하면 된다.

import com.arthenica.mobileffmpeg.FFmpeg

FFmpeg.execute("-i file1.mp4 -c:v mpeg4 file2.mp4") // 파일은 경로를 포함해서 써야한다. 

 

자세한 정보는 위 사이트에서 README.md로 제공하고 있다.

'Android' 카테고리의 다른 글

[Android] EditText에 이미지 추가  (0) 2019.10.27
[Android Kotlin] 음성 녹음  (0) 2019.10.04

+ Recent posts