Проблема в использовании библиотеки ASL для захвата скриншота - PullRequest
0 голосов
/ 04 декабря 2018

Я пытаюсь сделать снимки экрана с помощью библиотеки ASL .

Вот часть моего файла манифеста:

<service android:name=".services.ScreenshotService">
    <intent-filter>
        <action android:name="pl.polidea.asl.ScreenshotService.BIND" />
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</service>

Вот часть моей деятельности:

private IScreenshotProvider aslProvider = null;

    private ServiceConnection aslServiceConn = new ServiceConnection() {

        @Override
        public void onServiceDisconnected(ComponentName name) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            Log.d("service", "onServiceConnected called");
            aslProvider = IScreenshotProvider.Stub.asInterface(service);
        }
    };

Я привязываю службу в методе onCreate следующим образом:

Intent intent2 = new Intent("pl.polidea.asl.ScreenshotService.BIND");
intent2.setClass(this, ScreenshotService.class);
bindService (intent2, aslServiceConn, Context.BIND_AUTO_CREATE);

А вот код нажатия кнопки, когда я хочу сделать снимок экрана:

public void captureScreenshotMethod(){

    try {
        if (aslProvider == null)
            Toast.makeText(TrackerLogsActivity.this, "Prov = null", Toast.LENGTH_SHORT).show();
        else if (!aslProvider.isAvailable())
            Toast.makeText(TrackerLogsActivity.this, "Prov NA", Toast.LENGTH_SHORT).show();
        else {
            String file = aslProvider.takeScreenshot();
            if (file == null)
                Toast.makeText(TrackerLogsActivity.this, "Error in screenshot capture", Toast.LENGTH_SHORT).show();
            else {
                Toast.makeText(TrackerLogsActivity.this, "Screenshot captured & path - "+file, Toast.LENGTH_SHORT).show();
                //Bitmap screen = BitmapFactory.decodeFile(file);
                //imgScreen.setImageBitmap(screen);

            }
        }
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

Я всегда получаю тост "Prov NA".Пробовал чистить + строить.Пробовал перезагружать Android Studio.Любая помощь?Чего мне не хватает?

РЕДАКТИРОВАТЬ:

Копаясь в проблеме и отлаживая методы ScreenshotService в ASL, я дошел до этого момента:

Я получаю ConnectException здесь, в строке sock.connect:

private boolean isNativeRunning() {
    try {
        Socket sock = new Socket();
        sock.connect(new InetSocketAddress("localhost", PORT), TIMEOUT);    // short timeout
    }
    catch (Exception e) {
        e.printStackTrace();
        return false;
    }
    return true;
}

Выход Logcat:

12-06 16:50:42.484 21278-22065/com.pkg.myapp W/System.err: java.net.ConnectException: Connection refused
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:341)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:196)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:356)
        at java.net.Socket.connect(Socket.java:616)
        at com.pkg.myapp.services.ScreenshotService.isNativeRunning(ScreenshotService.java:100)
        at com.pkg.myapp.services.ScreenshotService.access$100(ScreenshotService.java:34)

Может кто-нибудь помочь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...