»Ë»Ñ Æ÷·³
 
IT °³¹ßÀÚ°£ Á¤º¸¸¦ °øÀ¯ÇÏ°í ³íÀÇ°¡ ÀÌ·ç¾îÁö´Â °ø°£ÀÔ´Ï´Ù.
¾Èµå·ÎÀ̵å Ãʺ¸ Áú¹® ÀÖ½À´Ï´Ù
ºÐ·ù: Áú¹®
À̸§: YaKi


µî·ÏÀÏ: 2021-03-08 21:16
Á¶È¸¼ö: 1422


1615206226_MainActivity.txt (3.6 KB)  ´Ù¿î¹ÞÀº Ƚ¼ö: 1  [´Ù¿î·Îµå]
1615206230_ScanActivity.txt (6.2 KB)  ´Ù¿î¹ÞÀº Ƚ¼ö: 1  [´Ù¿î·Îµå]




¾Èµå·ÎÀ̵å Ãʺ¸¶ó¼­ ÀÎÅͳݿ¡¼­ ¼Ò½º °Ë»öÈÄ ¸¸µé¾îº¸°í Àִµ¥ ÀÎÅÍÆäÀ̽º Ãß°¡ÇÏ°í »ç¿ëÁßÀε¥

¸ÞÀÎ activity¿¡¼­ ¹öÆ° Ŭ¸¯½Ã ¼­ºê activity°¡ ÀÛµ¿ÇؾßÇϴµ¥ ¹ÝÀÀÀÌ ¾ø½À´Ï´Ù. ¤Ð¤Ð

 

<< ¸µÅ© ÀÚ·á Âü°í ÇÏ¿´½À´Ï´Ù> 

 

 

--·Î±×

 

I/vndksupport: sphal namespace is not configured for this process. Loading /vendor/lib64/hw/gralloc.msm8998.so from the current namespace instead.

I/zygote64: vendor::lge::hardware::configstore::V1_0::IConfigStore::getUBWCUsageFlag retrieved: 0 (default)

I/Adreno: PFP: 0x005ff087, ME: 0x005ff063

I/OpenGLRenderer: Initialized EGL, version 1.4

D/OpenGLRenderer: Swap behavior 2

I/vndksupport: sphal namespace is not configured for this process. Loading /vendor/lib64/hw/gralloc.msm8998.so from the current namespace instead.

I/Timeline: Timeline: Activity_idle id: android.os.BinderProxy@b5037ba time:64392303

I/ViewRootImpl: ViewRoot's Touch Event : ACTION_DOWN

I/ViewRootImpl: ViewRoot's Touch Event : ACTION_UP

I/ViewRootImpl: ViewRoot's Touch Event : ACTION_DOWN

I/ViewRootImpl: ViewRoot's Touch Event : ACTION_UP

I/AudioManagerEx: AudioManagerEx created

I/Manager: Manager started on pid 10060 named 'com.example.myapplication' for application package 'com.example.myapplication'.  isMainProcess=true

D/BLEParser: ÆĽ̽Ã, »ç¿ëµÇ´Â ºñÄÜ ·¹À̾ƿô: x,s:0-1=bcbc,m:32-33=0a18,d:34-36,d:23-23,d:19-20,d:21-22,d:24-24,d:25-25,d:17-18,d:2-6,d:7-11,d:12-16

D/BLEParser: ÆĽ̽Ã, »ç¿ëµÇ´Â ºñÄÜ ·¹À̾ƿô: x,s:0-1=feaa,m:2-2=20,d:25-27,d:3-3,d:4-5,d:6-7,d:8-11,d:12-15

D/BLEParser: ÆĽ̽Ã, »ç¿ëµÇ´Â ºñÄÜ ·¹À̾ƿô: x,s:0-1=feaa,m:2-2=00,d:28-30,d:3-3,d:4-8,d:9-13,d:14-19

I/zygote64: Do partial code cache collection, code=26KB, data=28KB

    After code cache collection, code=26KB, data=28KB

    Increasing code cache capacity to 128KB

D/BLEParser: ÆĽ̽Ã, »ç¿ëµÇ´Â ºñÄÜ ·¹À̾ƿô: x,s:0-1=feaa,m:2-2=10,d:23-25,d:3-3,d:4-4,d:5-8,d:9-12,d:13-16,d:17-20

D/BLEParser: ÆĽ̽Ã, »ç¿ëµÇ´Â ºñÄÜ ·¹À̾ƿô: x,m:4-11=0b2b0848205f11e9,d:33-35,d:24-24,d:0-1,d:3-3,d:4-7,d:8-11,d:12-15,d:16-19,d:20-21,d:22-23

W/Manager: Android 8+¿¡¼­ ScanJobs¸¦ ºñÈ°¼ºÈ­Çϸé Æ÷±×¶ó¿îµå ¼­ºñ½º°¡ È°¼ºÈ­µÇÁö ¾Ê´Â ÇÑ ¹é±×¶ó¿îµå¿¡¼­ ½ÅÈ£ Äݹé Àü´ÞÀÌ ºñÈ°¼ºÈ­ µÉ ¼ö ÀÖ½À´Ï´Ù.

I/ScanJob: immediateScanJobId »ç¿ë, ¸Þ´ÏÆ佺Ʈ: 208352939

I/ScanJob: periodicScanJobId »ç¿ë, ¸Þ´ÏÆ佺Ʈ: 208352940

D/Manager: ÀÌ context ´Â ¿¬°áµÇÁö ¾Ê¾Ò½À´Ï´Ù. ¿¬°áÇÒ ´ë»ó: com.example.myapplication.ScanActivity@da65465

    ¼­ºñ½º¿¡ ¹ÙÀεù

I/Manager: Æ÷±×¶ó¿îµå ºñÄÜ ½ºÄ³´× ¼­ºñ½º¸¦ ½ÃÀÛÇÏ´Â Áß ÀÔ´Ï´Ù.

D/Manager: ÇöÀç ¹Ù¿îµåµÈ context ¼ö: 1

D/BezellessGripSuppressionFilter: getdisplaysize, x : 1440 y : 2880

I/CycledLeScanner: Android O Scanner ¸¦ »ç¿ë ÇÕ´Ï´Ù.

I/BLEService: BLEService ¹öÀü 1.0 °¡ ¸ÞÀÎ ÇÁ·Î¼¼½º¿¡¼­ ½ÃÀ۵˴ϴÙ

D/LocalBroadcastProcessor: Register calls: global=1 instance=1

I/BLEService: intent Intent { cmp=com.example.myapplication/kr.buildit.buildthing.ble.service.BLEService } ·Î ½ÃÀÛÇÕ´Ï´Ù

I/BLEService: ¹ÙÀεù

D/Manager: BLE Service °¡ ¿¬°á µÇ¾ú½À´Ï´Ù.

    µ¿ÀÏÇÑ ÇÁ·Î¼¼½º¿¡¼­ ¼³Á¤À» ¼­ºñ½º¿Í µ¿±âÈ­ÇÏÁö ¾ÊÀ½

I/ScanActivity: service connected

D/OpenGLRenderer: endAllActiveAnimators on 0x7d7aaed400 (RippleDrawable) with handle 0x7d7a23e5e0

I/Timeline: Timeline: Activity_idle id: android.os.BinderProxy@dbaf056 time:64398243

I/ViewRootImpl: ViewRoot's Touch Event : ACTION_DOWN

I/ViewRootImpl: ViewRoot's Touch Event : ACTION_UP 

 

 

--¸ÞÀÎ
package com.example.myapplication;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.Manifest;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
public class MainActivity extends AppCompatActivity {
    protected static final String TAG = "MainActivity";
    private static final int PERMISSION_REQUEST_COARSE_LOCATION = 1;
    //public static final int SCAN = 1001;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //Log.i("TEST:","¿¬°áµÇ³ª MAIN1");
        setContentView(R.layout.activity_main);
        //Button button = (Button)findViewById(R.id.SCAN); 
        /*
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getApplicationContext(),ScanActivity.class);
                startActivityForResult(intent,SCAN);//¾×ƼºñƼ ¶ç¿ì±â
            }
        });
        */
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            // Android M Permission check
            if (this.checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                final AlertDialog.Builder builder = new AlertDialog.Builder(this);
                builder.setTitle("±ÇÇÑ ¾øÀ½");
                builder.setMessage("À§Ä¡ Á¢±Ù ±ÇÇÑÀ» Çã¿ëÇؾ߸¸ ºñÄÜÀ» ½ºÄµÇÒ ¼ö ÀÖ½À´Ï´Ù.");
                builder.setPositiveButton(android.R.string.ok, null);
                builder.setOnDismissListener(new DialogInterface.OnDismissListener() {
                    @Override
                    public void onDismiss(DialogInterface dialog) {
                        requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, PERMISSION_REQUEST_COARSE_LOCATION);
                    }
                });
                builder.show();
                Log.i("TEST:","¿¬°áµÇ³ª MAIN2");
            }
        }
    }
    @Override
    public void onRequestPermissionsResult(int requestCode,
                                           String permissions[], int[] grantResults) {
        switch (requestCode) {
            case PERMISSION_REQUEST_COARSE_LOCATION: {
                if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    Log.d(TAG, "À§Ä¡ ±ÇÇÑ Çã¿ëµÊ.");
                } else {
                    final AlertDialog.Builder builder = new AlertDialog.Builder(this);
                    builder.setTitle("±ÇÇÑ ¾øÀ½");
                    builder.setMessage("À§Ä¡ Á¢±Ù ±ÇÇÑÀ» Çã¿ëÇؾ߸¸ ºñÄÜÀ» ½ºÄµÇÒ ¼ö ÀÖ½À´Ï´Ù.");
                    builder.setPositiveButton(android.R.string.ok, null);
                    builder.setOnDismissListener(new DialogInterface.OnDismissListener() {
                        @Override
                        public void onDismiss(DialogInterface dialog) {
                        }
                    });
                     builder.show();
                    //Log.i("TEST:","¿¬°áµÇ³ª MAIN3");
                }
                return;
            }
        }
    }
    public void onClick(View view) {
        if(view.getId() == R.id.SCAN){
            Intent intent = new Intent(this, ScanActivity.class);
            startActivity(intent);
        }
    }
}
--¼­ºê
package com.example.myapplication;
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.content.Context;
import android.os.Bundle;
import android.os.RemoteException;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import androidx.core.app.NotificationCompat;
import java.util.List;
import kr.buildit.buildthing.ble.BLEServiceContext;
import kr.buildit.buildthing.ble.Manager;
import kr.buildit.buildthing.ble.ScanListener;
import kr.buildit.buildthing.ble.beacon.Beacon;
public class ScanActivity extends Activity implements BLEServiceContext {
    protected static final String TAG = "ScanActivity";
    private Manager mManager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //Log.i("TEST:","¿¬°áµÇ³ª SCAN");
        setContentView(R.layout.activity_build_thing);
        mManager = Manager.getInstance(this);
        //µð¹ö±ë ¸ðµå ON
        mManager.setDebug(true);
         /*
            ¾ÛÀÌ enableForegroundServiceScanning()À» ÅëÇØ Æ÷±×¶ó¿îµå¼­ºñ½º·Î µî·ÏµÇ¾î ÀÖÁö ¾ÊÀ» ¶§,
            ºñÄÜ ½ºÄµ ¼öÇà ½Ã, SDK´Â ±âº»ÀûÀ¸·Î JobScheduler¸¦ »ç¿ëÇÏ¿© ½ºÄµÇÏ°Ô µË´Ï´Ù.
            ÀÌ ¶§, ¹é±×¶ó¿îµå ½ºÄµÀº ÃÖ¼Ò 15ºÐ °£°ÝÀ¸·Î¸¸ ½ºÄµµË´Ï´Ù. (¾Èµå·ÎÀ̵å 8.0, API 26 ºÎÅÍ´Â ¹é±×¶ó¿îµå¿¡¼­ ½ÇÇàµÇ´Â ¾Û µ¿ÀÛÀ» Á¦ÇÑÇÏ¿´½À´Ï´Ù.)
            ¸¸¾à ¹é±×¶ó¿îµå¿¡¼­µµ ¿øÇÏ´Â ¸¸Å­ ´õ ªÀº °£°ÝÀÇ ½ºÄµÀ» ¿øÇÏ´Â °æ¿ì,
            enableForegroundServiceScanning ÇÔ¼ö¸¦ ÅëÇؼ­ Æ÷±×¶ó¿î ¼­ºñ½º¸¦ È°¼ºÈ­ÇÏ°í Notification µî·ÏÇÏ¿©
            »ç¿ëÀÚ°¡ ÀÌ ¾ÛÀÌ ¹é±×¶ó¿îµå¿¡¼­ ½ÇÇàµÇ°í ÀÖÀ½À» ¾Ë¸± ¼ö ÀÖ¾î¾ßÇÕ´Ï´Ù.
        */
        this.enableForegroundServiceScanning();
        mManager.bind(this);
    }
    public void enableForegroundServiceScanning() {
        // enableForegroundServiceScanning ¸¦ »ç¿ëÇϱâ À§ÇÑ NotificationChannel°ú Notification »ý¼º
        String CHANEL_ID = "channel_1";
        NotificationChannel channel = new NotificationChannel(CHANEL_ID, "Android test", NotificationManager.IMPORTANCE_LOW);
        ((NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE)).createNotificationChannel(channel);
        Notification notification = new NotificationCompat.Builder(this, CHANEL_ID).build();
        mManager.enableForegroundServiceScanning(notification, 4);
        //Log.i("TEST:","¿¬°áµÇ³ª SCAN"+ CHANEL_ID);
    }
    public void startScan(View view) throws RemoteException {
        // ½ºÄµ ½ÃÀÛ
        Log.i("tag","¿¬°á startScan");
        mManager.startScan();
    }
    public void stopScan(View view) throws RemoteException {
        // ½ºÄµ Á¤Áö
        Log.i("tag","¿¬°á stopScan");
        mManager.stopScan();
    }
    public void setForegroundScanPeriod(View view) throws RemoteException {
        EditText editText = (EditText)findViewById(R.id.foreground_scan_period);
        Log.i("tag","¿¬°á editText");
        Long foregroundScanPeriod = 0l;
        try {
            foregroundScanPeriod = Long.parseLong(editText.getText().toString());
        } catch (NumberFormatException e) {}
        // Æ÷±×¶ó¿îµå ½ºÄµÀÇ Áö¼Ó ½Ã°£À» ¼³Á¤ÇÕ´Ï´Ù.
        mManager.setForegroundScanPeriod(foregroundScanPeriod);
        mManager.updateScanPeriods();
    }
    public void setForegroundScanBetweenPeriod(View view) throws RemoteException {
        EditText editText = (EditText)findViewById(R.id.foreground_between_scan_period);
        Long foregroundScanBetweenPeriod = 0l;
        try {
            foregroundScanBetweenPeriod = Long.parseLong(editText.getText().toString());
        } catch (NumberFormatException e) {}
        // Æ÷±×¶ó¿îµå ½ºÄµ »çÀÌŬÀÇ Áֱ⸦ ¼³Á¤ÇÕ´Ï´Ù.
        mManager.setForegroundBetweenScanPeriod(foregroundScanBetweenPeriod);
        mManager.updateScanPeriods();
    }
    public void setBackgroundScanPeriod(View view) throws RemoteException {
        EditText editText = (EditText)findViewById(R.id.background_scan_period);
        Long backgroundScanPeriod = 0l;
        try {
            backgroundScanPeriod = Long.parseLong(editText.getText().toString());
        } catch (NumberFormatException e) {}
        // ¹é±×¶ó¿îµå ½ºÄµÀÇ Áö¼Ó ½Ã°£À» ¼³Á¤ÇÕ´Ï´Ù.
        mManager.setBackgroundScanPeriod(backgroundScanPeriod);
        mManager.updateScanPeriods();
    }
    public void setBackgroundBetweenScanPeriod(View view) throws RemoteException {
        EditText editText = (EditText)findViewById(R.id.background_between_scan_period);
        Long backgroundBetweenScanPeriod = 0l;
        try {
            backgroundBetweenScanPeriod = Long.parseLong(editText.getText().toString());
        } catch (NumberFormatException e) {}
        // ¹é±×¶ó¿îµå ½ºÄµ »çÀÌŬÀÇ Áֱ⸦ ¼³Á¤ÇÕ´Ï´Ù.
        mManager.setBackgroundBetweenScanPeriod(backgroundBetweenScanPeriod);
        mManager.updateScanPeriods();
    }
    @Override
    public void onBLEServiceConnect() {
        //Log.i("tag","¿¬°á connect");
        Log.i(TAG, "service connected");
        // ½ºÄµ À̺¥Æ® ¸®½º³Ê ÃʱâÈ­
        //mManager.removeAllScanListener();
        mManager.addScanListener(new ScanListener() {
            @Override
            public void onDiscover(Beacon beacon) {
                // ½ºÄµÁß ¹ß°ßÇÑ ºñÄÜ ÀνºÅϽº¸¦ ÀÎÀÚ·Î Àü´Þ¹Þ½À´Ï´Ù.
                Log.i(TAG, "onDiscover beacon: " + beacon);
            }
            @Override
            public void onUndiscover(List<Beacon> beacons) {
                // ¼³Á¤ÇÑ ½ºÄµ Áֱ⠵¿¾È ¹ß°ßµÇÁö ¾ÊÀº ºñÄÜ ÀνºÅϽº¸¦ ÀÎÀÚ·Î Àü´Þ¹Þ½À´Ï´Ù.
                Log.i(TAG, "onUndiscover beacons: " +  beacons);
            }
        });
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        mManager.unbind(this);
    }
}


 

ÃßõÇϱâ0 ´Ù¸¥ÀÇ°ß0

  • ¾Ë¸² ¿å¼³, »óó ÁÙ ¼ö ÀÖ´Â ¾ÇÇÃÀº »ï°¡ÁÖ¼¼¿ä.
©¹æ »çÁø  
¡â ÀÌÀü±Û¡ä ´ÙÀ½±Û