마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

이어폰 연결유무 체크하는걸 만들었는데 작동을 안해서 질문드립니다.

0 추천

유니티라는 게임엔진에서 이어폰의 연결유무를 확인하기 위해서 플러그인 형식으로 만들어서 가져가려고 하는데요.

이거저거 짜집기해서 만들긴했는데

무슨이유인지.. 계속 false만 나오는데.. 이유가 무엇인지 알고싶습니다.

 

package com.example.unityproject;
import android.app.Activity;
import android.media.AudioManager;
import android.media.AudioDeviceInfo;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.BroadcastReceiver;

public class PluginClass extends Activity
{
    private static IntentFilter mIntentFilter = new IntentFilter(Intent.ACTION_HEADSET_PLUG);
    private static BroadcastReceiver mBroadcastReceiver = null;
    private static boolean isearphone = false;

    public static boolean isHeadphonesPlugged(Context c)
    {
        final Context component = c;

        mBroadcastReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent)
            {
                AudioManager audio = (AudioManager)component.getSystemService(context.AUDIO_SERVICE);
                int systemVolume = audio.getStreamVolume(AudioManager.STREAM_SYSTEM);
                isearphone = (intent.getIntExtra("state", 0) > 0) ? true : false;
            }
        };
return  isearphone;
    }
}
 
이렇게 만들었는데요.. 유니티에서는 저 bool값만 이용해서 체크할거구요
제가 알아본바로는 BroadcastReceiver랑 onReceive 오버로딩 한부분이 이벤트처럼 실제기기에 어떤이벤트가 일어나는 순간 실행된다고 알고있거든요?
 
그러면 onreceive에서 isearphone에 이어폰연결유무가 담기고 저는 이걸 유니티에서 그대로 불러다 쓰면 될줄 알았지만..
계속 false가 나오네요..
 
사실 예전에 한번 이어폰 체크하는 플러그인을 어떻게어떻게 만들긴했었는데..
그때는 그냥 요청할때마다 bool값을 체크해서 반환해줬었는데.
제가 하고싶은게 제가 직접 요청하지않아도 이어폰을 꼽는순간 빼는 순간에 자동으로 bool값이 담기게 하고싶거든요.
어떤게 잘못된건지 알고싶습니다.
아..그리고 혹시나 유니티에서 bool값을 받아쓴것도 올리겠습니다.
        var up = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        var currentActivity = up.GetStatic<AndroidJavaObject>("currentActivity");
        var plugin = new AndroidJavaClass("com.example.unityproject.PluginClass");
        isplug = plugin.CallStatic<bool>("isHeadphonesPlugged", currentActivity);
술홍 (230 포인트) 님이 2018년 6월 15일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...