Ubuntu 18.04 버전에서 이번에 새로 구매한 ipTIME A3000U를 사용하려고 하는데 드라이버가 자동으로 설치되지 않아 설치하는 방법을 찾아보았고 터미널에서 아래와 같이 입력하여 드라이버를 설치할 수 있었다.

 

sudo apt-get update

sudo apt-get install build-essential dkms git

sudo git clone https://github.com/cilynx/rtl88x2BU_WiFi_linux_v5.3.1_27678.20180430_COEX20180427-5959.git

cd rtl88x2BU_WiFi_linux_v5.3.1_27678.20180430_COEX20180427-5959

VER=$(sed -n 's/\PACKAGE_VERSION="\(.*\)"/\1/p' dkms.conf)

sudo rsync -rvhP ./ /usr/src/rtl88x2bu-${VER}

sudo dkms add -m rtl88x2bu -v ${VER}

sudo dkms build -m rtl88x2bu -v ${VER}

sudo dkms install -m rtl88x2bu -v ${VER}

sudo modprobe 88x2bu

 

 다 입력하였으면 이제 A3000U를 연결한 다음 터미널에서 ifconfig를 입력하면 아래와 같이 A3000U에 대한 인터페이스를 확인할 수 있다. 

 

 드라이버 설치에 관한 자세한 내용은 https://github.com/cilynx/rtl88x2BU_WiFi_linux_v5.3.1_27678.20180430_COEX20180427-5959의 README.md에서 확인할 수 있다.

 

 

참고사이트

 

1. http://blog.naver.com/PostView.nhn?blogId=namhong2001&logNo=221548649952&parentCategoryNo=&categoryNo=56&viewDate=&isShowPopularPosts=true&from=search

2. https://askubuntu.com/questions/1079377/how-do-i-install-drivers-for-realtek-rtl8812bu

3. https://github.com/cilynx/rtl88x2BU_WiFi_linux_v5.3.1_27678.20180430_COEX20180427-5959

무선 랜카드가 리눅스에서 지원하는 인터페이스 모드를 확인하고자 할 때 iw list 명령어로 확인할 수 있다.

 

 

그러면 아래와 같이 Supported interface modes를 확인할 수 있고 여기서 지원되는 모드를 확인할 수 있다.

 

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

 

먼저 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

+ Recent posts