Я пытаюсь сделать снимки экрана с помощью библиотеки 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)
Может кто-нибудь помочь?