add basic android app
							
								
								
									
										10
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						@@ -1,2 +1,12 @@
 | 
				
			|||||||
*.pyc
 | 
					*.pyc
 | 
				
			||||||
 | 
					app/gradle/wrapper/*
 | 
				
			||||||
 | 
					app/gradlew
 | 
				
			||||||
 | 
					app/gradlew.bat
 | 
				
			||||||
 | 
					app/gradle.properties
 | 
				
			||||||
 | 
					app/build/*
 | 
				
			||||||
 | 
					app/app/build/*
 | 
				
			||||||
 | 
					app/app/release/*
 | 
				
			||||||
 | 
					app/.idea/*
 | 
				
			||||||
 | 
					app/.gradle/*
 | 
				
			||||||
 | 
					app/gradle/*
 | 
				
			||||||
sources.json
 | 
					sources.json
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										35
									
								
								app/app/build.gradle
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,35 @@
 | 
				
			|||||||
 | 
					plugins {
 | 
				
			||||||
 | 
					    id 'com.android.application'
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					android {
 | 
				
			||||||
 | 
					    compileSdkVersion 29
 | 
				
			||||||
 | 
					    buildToolsVersion "30.0.3"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    defaultConfig {
 | 
				
			||||||
 | 
					        applicationId "it.purser.stream"
 | 
				
			||||||
 | 
					        minSdkVersion 25
 | 
				
			||||||
 | 
					        targetSdkVersion 29
 | 
				
			||||||
 | 
					        versionCode 1
 | 
				
			||||||
 | 
					        versionName "1.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    buildTypes {
 | 
				
			||||||
 | 
					        release {
 | 
				
			||||||
 | 
					            minifyEnabled false
 | 
				
			||||||
 | 
					            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    compileOptions {
 | 
				
			||||||
 | 
					        sourceCompatibility JavaVersion.VERSION_1_8
 | 
				
			||||||
 | 
					        targetCompatibility JavaVersion.VERSION_1_8
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					dependencies {
 | 
				
			||||||
 | 
					    testImplementation 'junit:junit:4.+'
 | 
				
			||||||
 | 
					    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
 | 
				
			||||||
 | 
					    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										21
									
								
								app/app/proguard-rules.pro
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,21 @@
 | 
				
			|||||||
 | 
					# Add project specific ProGuard rules here.
 | 
				
			||||||
 | 
					# You can control the set of applied configuration files using the
 | 
				
			||||||
 | 
					# proguardFiles setting in build.gradle.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# For more details, see
 | 
				
			||||||
 | 
					#   http://developer.android.com/guide/developing/tools/proguard.html
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# If your project uses WebView with JS, uncomment the following
 | 
				
			||||||
 | 
					# and specify the fully qualified class name to the JavaScript interface
 | 
				
			||||||
 | 
					# class:
 | 
				
			||||||
 | 
					#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
 | 
				
			||||||
 | 
					#   public *;
 | 
				
			||||||
 | 
					#}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Uncomment this to preserve the line number information for
 | 
				
			||||||
 | 
					# debugging stack traces.
 | 
				
			||||||
 | 
					#-keepattributes SourceFile,LineNumberTable
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# If you keep the line number information, uncomment this to
 | 
				
			||||||
 | 
					# hide the original source file name.
 | 
				
			||||||
 | 
					#-renamesourcefileattribute SourceFile
 | 
				
			||||||
@@ -0,0 +1,25 @@
 | 
				
			|||||||
 | 
					package it.purser.stream;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import android.content.Context;
 | 
				
			||||||
 | 
					import androidx.test.platform.app.InstrumentationRegistry;
 | 
				
			||||||
 | 
					import androidx.test.ext.junit.runners.AndroidJUnit4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.junit.Test;
 | 
				
			||||||
 | 
					import org.junit.runner.RunWith;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import static org.junit.Assert.*;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Instrumented test, which will execute on an Android device.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					@RunWith(AndroidJUnit4.class)
 | 
				
			||||||
 | 
					public class ExampleInstrumentedTest {
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void useAppContext() {
 | 
				
			||||||
 | 
					        // Context of the app under test.
 | 
				
			||||||
 | 
					        Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
 | 
				
			||||||
 | 
					        assertEquals("it.purser.stream", appContext.getPackageName());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										25
									
								
								app/app/src/main/AndroidManifest.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,25 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
 | 
					<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="it.purser.stream">
 | 
				
			||||||
 | 
					    <application
 | 
				
			||||||
 | 
					            android:allowBackup="false"
 | 
				
			||||||
 | 
					            android:fullBackupContent="false"
 | 
				
			||||||
 | 
					            android:icon="@mipmap/ic_launcher"
 | 
				
			||||||
 | 
					            android:label="@string/app_name"
 | 
				
			||||||
 | 
					            android:roundIcon="@mipmap/ic_launcher_round"
 | 
				
			||||||
 | 
					            android:supportsRtl="true"
 | 
				
			||||||
 | 
					            android:theme="@style/Theme.ProxyStream">
 | 
				
			||||||
 | 
					        <activity android:name="it.purser.stream.MainActivity">
 | 
				
			||||||
 | 
					            <intent-filter>
 | 
				
			||||||
 | 
					                <action android:name="android.intent.action.MAIN"/>
 | 
				
			||||||
 | 
					                <category android:name="android.intent.category.LAUNCHER"/>
 | 
				
			||||||
 | 
					            </intent-filter>
 | 
				
			||||||
 | 
					        </activity>
 | 
				
			||||||
 | 
					        <activity android:name="it.purser.stream.ShareActivity">
 | 
				
			||||||
 | 
					            <intent-filter>
 | 
				
			||||||
 | 
					                <action android:name="android.intent.action.SEND" />
 | 
				
			||||||
 | 
					                <category android:name="android.intent.category.DEFAULT" />
 | 
				
			||||||
 | 
					                <data android:mimeType="*/*" />
 | 
				
			||||||
 | 
					            </intent-filter>
 | 
				
			||||||
 | 
					        </activity>
 | 
				
			||||||
 | 
					    </application>
 | 
				
			||||||
 | 
					</manifest>
 | 
				
			||||||
							
								
								
									
										12
									
								
								app/app/src/main/java/it/purser/stream/MainActivity.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					package it.purser.stream;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import android.app.Activity;
 | 
				
			||||||
 | 
					import android.os.Bundle;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class MainActivity extends Activity {
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    protected void onCreate(Bundle savedInstanceState) {
 | 
				
			||||||
 | 
					        super.onCreate(savedInstanceState);
 | 
				
			||||||
 | 
					        setContentView(R.layout.activity_main);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										45
									
								
								app/app/src/main/java/it/purser/stream/ShareActivity.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,45 @@
 | 
				
			|||||||
 | 
					package it.purser.stream;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import android.app.Activity;
 | 
				
			||||||
 | 
					import android.content.Intent;
 | 
				
			||||||
 | 
					import android.net.Uri;
 | 
				
			||||||
 | 
					import android.os.Bundle;
 | 
				
			||||||
 | 
					import java.util.HashSet;
 | 
				
			||||||
 | 
					import java.util.Locale;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class ShareActivity extends Activity {
 | 
				
			||||||
 | 
					    private Uri getSharedLink() {
 | 
				
			||||||
 | 
					        HashSet<String> domains = new HashSet<String>();
 | 
				
			||||||
 | 
					        domains.add("youtu.be");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Intent intent = getIntent();
 | 
				
			||||||
 | 
					        Bundle bundle = intent.getExtras();
 | 
				
			||||||
 | 
					        for(String key: bundle.keySet()) {
 | 
				
			||||||
 | 
					            try {
 | 
				
			||||||
 | 
					                String txt = (String) bundle.get(key);
 | 
				
			||||||
 | 
					                Uri uri = Uri.parse(txt);
 | 
				
			||||||
 | 
					                String host = uri.getHost().toLowerCase(Locale.ROOT);
 | 
				
			||||||
 | 
					                if(domains.contains(host)) {
 | 
				
			||||||
 | 
					                    return uri;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            } catch(Exception e) {}
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return null;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    protected void onCreate(Bundle savedInstanceState) {
 | 
				
			||||||
 | 
					        super.onCreate(savedInstanceState);
 | 
				
			||||||
 | 
					        setContentView(R.layout.activity_main);
 | 
				
			||||||
 | 
					        Uri uri = getSharedLink();
 | 
				
			||||||
 | 
					        if(uri != null) {
 | 
				
			||||||
 | 
					            Uri.Builder builder = new Uri.Builder();
 | 
				
			||||||
 | 
					            builder.authority("stream.purser.it");
 | 
				
			||||||
 | 
					            builder.scheme("https");
 | 
				
			||||||
 | 
					            builder.path(uri.getPath());
 | 
				
			||||||
 | 
					            builder.appendQueryParameter("provider", "youtube");
 | 
				
			||||||
 | 
					            builder.appendQueryParameter("render", "true");
 | 
				
			||||||
 | 
					            Intent launch = new Intent(Intent.ACTION_VIEW, builder.build());
 | 
				
			||||||
 | 
					            startActivity(launch);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										31
									
								
								app/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,31 @@
 | 
				
			|||||||
 | 
					<vector xmlns:android="http://schemas.android.com/apk/res/android"
 | 
				
			||||||
 | 
					        xmlns:aapt="http://schemas.android.com/aapt"
 | 
				
			||||||
 | 
					        android:width="108dp"
 | 
				
			||||||
 | 
					        android:height="108dp"
 | 
				
			||||||
 | 
					        android:viewportWidth="108"
 | 
				
			||||||
 | 
					        android:viewportHeight="108">
 | 
				
			||||||
 | 
					    <path
 | 
				
			||||||
 | 
					            android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
 | 
				
			||||||
 | 
					        <aapt:attr name="android:fillColor">
 | 
				
			||||||
 | 
					            <gradient
 | 
				
			||||||
 | 
					                    android:startY="49.59793"
 | 
				
			||||||
 | 
					                    android:startX="42.9492"
 | 
				
			||||||
 | 
					                    android:endY="92.4963"
 | 
				
			||||||
 | 
					                    android:endX="85.84757"
 | 
				
			||||||
 | 
					                    android:type="linear">
 | 
				
			||||||
 | 
					                <item
 | 
				
			||||||
 | 
					                        android:color="#44000000"
 | 
				
			||||||
 | 
					                        android:offset="0.0"/>
 | 
				
			||||||
 | 
					                <item
 | 
				
			||||||
 | 
					                        android:color="#00000000"
 | 
				
			||||||
 | 
					                        android:offset="1.0"/>
 | 
				
			||||||
 | 
					            </gradient>
 | 
				
			||||||
 | 
					        </aapt:attr>
 | 
				
			||||||
 | 
					    </path>
 | 
				
			||||||
 | 
					    <path
 | 
				
			||||||
 | 
					            android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
 | 
				
			||||||
 | 
					            android:fillColor="#FFFFFF"
 | 
				
			||||||
 | 
					            android:fillType="nonZero"
 | 
				
			||||||
 | 
					            android:strokeWidth="1"
 | 
				
			||||||
 | 
					            android:strokeColor="#00000000"/>
 | 
				
			||||||
 | 
					</vector>
 | 
				
			||||||
							
								
								
									
										74
									
								
								app/app/src/main/res/drawable/ic_launcher_background.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,74 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
 | 
					<vector
 | 
				
			||||||
 | 
					        xmlns:android="http://schemas.android.com/apk/res/android"
 | 
				
			||||||
 | 
					        android:height="108dp"
 | 
				
			||||||
 | 
					        android:width="108dp"
 | 
				
			||||||
 | 
					        android:viewportHeight="108"
 | 
				
			||||||
 | 
					        android:viewportWidth="108">
 | 
				
			||||||
 | 
					    <path android:fillColor="#3DDC84"
 | 
				
			||||||
 | 
					          android:pathData="M0,0h108v108h-108z"/>
 | 
				
			||||||
 | 
					    <path android:fillColor="#00000000" android:pathData="M9,0L9,108"
 | 
				
			||||||
 | 
					          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
 | 
				
			||||||
 | 
					    <path android:fillColor="#00000000" android:pathData="M19,0L19,108"
 | 
				
			||||||
 | 
					          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
 | 
				
			||||||
 | 
					    <path android:fillColor="#00000000" android:pathData="M29,0L29,108"
 | 
				
			||||||
 | 
					          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
 | 
				
			||||||
 | 
					    <path android:fillColor="#00000000" android:pathData="M39,0L39,108"
 | 
				
			||||||
 | 
					          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
 | 
				
			||||||
 | 
					    <path android:fillColor="#00000000" android:pathData="M49,0L49,108"
 | 
				
			||||||
 | 
					          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
 | 
				
			||||||
 | 
					    <path android:fillColor="#00000000" android:pathData="M59,0L59,108"
 | 
				
			||||||
 | 
					          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
 | 
				
			||||||
 | 
					    <path android:fillColor="#00000000" android:pathData="M69,0L69,108"
 | 
				
			||||||
 | 
					          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
 | 
				
			||||||
 | 
					    <path android:fillColor="#00000000" android:pathData="M79,0L79,108"
 | 
				
			||||||
 | 
					          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
 | 
				
			||||||
 | 
					    <path android:fillColor="#00000000" android:pathData="M89,0L89,108"
 | 
				
			||||||
 | 
					          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
 | 
				
			||||||
 | 
					    <path android:fillColor="#00000000" android:pathData="M99,0L99,108"
 | 
				
			||||||
 | 
					          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
 | 
				
			||||||
 | 
					    <path android:fillColor="#00000000" android:pathData="M0,9L108,9"
 | 
				
			||||||
 | 
					          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
 | 
				
			||||||
 | 
					    <path android:fillColor="#00000000" android:pathData="M0,19L108,19"
 | 
				
			||||||
 | 
					          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
 | 
				
			||||||
 | 
					    <path android:fillColor="#00000000" android:pathData="M0,29L108,29"
 | 
				
			||||||
 | 
					          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
 | 
				
			||||||
 | 
					    <path android:fillColor="#00000000" android:pathData="M0,39L108,39"
 | 
				
			||||||
 | 
					          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
 | 
				
			||||||
 | 
					    <path android:fillColor="#00000000" android:pathData="M0,49L108,49"
 | 
				
			||||||
 | 
					          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
 | 
				
			||||||
 | 
					    <path android:fillColor="#00000000" android:pathData="M0,59L108,59"
 | 
				
			||||||
 | 
					          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
 | 
				
			||||||
 | 
					    <path android:fillColor="#00000000" android:pathData="M0,69L108,69"
 | 
				
			||||||
 | 
					          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
 | 
				
			||||||
 | 
					    <path android:fillColor="#00000000" android:pathData="M0,79L108,79"
 | 
				
			||||||
 | 
					          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
 | 
				
			||||||
 | 
					    <path android:fillColor="#00000000" android:pathData="M0,89L108,89"
 | 
				
			||||||
 | 
					          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
 | 
				
			||||||
 | 
					    <path android:fillColor="#00000000" android:pathData="M0,99L108,99"
 | 
				
			||||||
 | 
					          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
 | 
				
			||||||
 | 
					    <path android:fillColor="#00000000" android:pathData="M19,29L89,29"
 | 
				
			||||||
 | 
					          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
 | 
				
			||||||
 | 
					    <path android:fillColor="#00000000" android:pathData="M19,39L89,39"
 | 
				
			||||||
 | 
					          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
 | 
				
			||||||
 | 
					    <path android:fillColor="#00000000" android:pathData="M19,49L89,49"
 | 
				
			||||||
 | 
					          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
 | 
				
			||||||
 | 
					    <path android:fillColor="#00000000" android:pathData="M19,59L89,59"
 | 
				
			||||||
 | 
					          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
 | 
				
			||||||
 | 
					    <path android:fillColor="#00000000" android:pathData="M19,69L89,69"
 | 
				
			||||||
 | 
					          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
 | 
				
			||||||
 | 
					    <path android:fillColor="#00000000" android:pathData="M19,79L89,79"
 | 
				
			||||||
 | 
					          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
 | 
				
			||||||
 | 
					    <path android:fillColor="#00000000" android:pathData="M29,19L29,89"
 | 
				
			||||||
 | 
					          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
 | 
				
			||||||
 | 
					    <path android:fillColor="#00000000" android:pathData="M39,19L39,89"
 | 
				
			||||||
 | 
					          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
 | 
				
			||||||
 | 
					    <path android:fillColor="#00000000" android:pathData="M49,19L49,89"
 | 
				
			||||||
 | 
					          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
 | 
				
			||||||
 | 
					    <path android:fillColor="#00000000" android:pathData="M59,19L59,89"
 | 
				
			||||||
 | 
					          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
 | 
				
			||||||
 | 
					    <path android:fillColor="#00000000" android:pathData="M69,19L69,89"
 | 
				
			||||||
 | 
					          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
 | 
				
			||||||
 | 
					    <path android:fillColor="#00000000" android:pathData="M79,19L79,89"
 | 
				
			||||||
 | 
					          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
 | 
				
			||||||
 | 
					</vector>
 | 
				
			||||||
							
								
								
									
										8
									
								
								app/app/src/main/res/layout/activity_main.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
 | 
					<android.widget.RelativeLayout
 | 
				
			||||||
 | 
					        xmlns:android="http://schemas.android.com/apk/res/android"
 | 
				
			||||||
 | 
					        xmlns:tools="http://schemas.android.com/tools"
 | 
				
			||||||
 | 
					        android:layout_width="match_parent"
 | 
				
			||||||
 | 
					        android:layout_height="match_parent"
 | 
				
			||||||
 | 
					        tools:context=".MainActivity">
 | 
				
			||||||
 | 
					</android.widget.RelativeLayout>
 | 
				
			||||||
							
								
								
									
										5
									
								
								app/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
 | 
					<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
 | 
				
			||||||
 | 
					    <background android:drawable="@drawable/ic_launcher_background"/>
 | 
				
			||||||
 | 
					    <foreground android:drawable="@drawable/ic_launcher_foreground"/>
 | 
				
			||||||
 | 
					</adaptive-icon>
 | 
				
			||||||
@@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
 | 
					<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
 | 
				
			||||||
 | 
					    <background android:drawable="@drawable/ic_launcher_background"/>
 | 
				
			||||||
 | 
					    <foreground android:drawable="@drawable/ic_launcher_foreground"/>
 | 
				
			||||||
 | 
					</adaptive-icon>
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								app/app/src/main/res/mipmap-hdpi/ic_launcher.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 3.5 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 5.2 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/app/src/main/res/mipmap-mdpi/ic_launcher.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 2.6 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 3.3 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/app/src/main/res/mipmap-xhdpi/ic_launcher.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 4.8 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 7.3 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 7.7 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 12 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 10 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 16 KiB  | 
							
								
								
									
										4
									
								
								app/app/src/main/res/values-night/themes.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					<resources xmlns:tools="http://schemas.android.com/tools">
 | 
				
			||||||
 | 
					    <!-- Base application theme. -->
 | 
				
			||||||
 | 
					    <style name="Theme.ProxyStream" parent="android:Theme.Black"/>
 | 
				
			||||||
 | 
					</resources>
 | 
				
			||||||
							
								
								
									
										10
									
								
								app/app/src/main/res/values/colors.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,10 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
 | 
					<resources>
 | 
				
			||||||
 | 
					    <color name="purple_200">#FFBB86FC</color>
 | 
				
			||||||
 | 
					    <color name="purple_500">#FF6200EE</color>
 | 
				
			||||||
 | 
					    <color name="purple_700">#FF3700B3</color>
 | 
				
			||||||
 | 
					    <color name="teal_200">#FF03DAC5</color>
 | 
				
			||||||
 | 
					    <color name="teal_700">#FF018786</color>
 | 
				
			||||||
 | 
					    <color name="black">#FF000000</color>
 | 
				
			||||||
 | 
					    <color name="white">#FFFFFFFF</color>
 | 
				
			||||||
 | 
					</resources>
 | 
				
			||||||
							
								
								
									
										3
									
								
								app/app/src/main/res/values/strings.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					<resources>
 | 
				
			||||||
 | 
					    <string name="app_name">Proxy Stream</string>
 | 
				
			||||||
 | 
					</resources>
 | 
				
			||||||
							
								
								
									
										4
									
								
								app/app/src/main/res/values/themes.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					<resources xmlns:tools="http://schemas.android.com/tools">
 | 
				
			||||||
 | 
					    <!-- Base application theme. -->
 | 
				
			||||||
 | 
					    <style name="Theme.ProxyStream.Default" parent="android:Theme.Black"/>
 | 
				
			||||||
 | 
					</resources>
 | 
				
			||||||
							
								
								
									
										17
									
								
								app/app/src/test/java/it/purser/stream/ExampleUnitTest.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					package it.purser.stream;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.junit.Test;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import static org.junit.Assert.*;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Example local unit test, which will execute on the development machine (host).
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public class ExampleUnitTest {
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void addition_isCorrect() {
 | 
				
			||||||
 | 
					        assertEquals(4, 2 + 2);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										24
									
								
								app/build.gradle
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					// Top-level build file where you can add configuration options common to all sub-projects/modules.
 | 
				
			||||||
 | 
					buildscript {
 | 
				
			||||||
 | 
					    repositories {
 | 
				
			||||||
 | 
					        google()
 | 
				
			||||||
 | 
					        jcenter()
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    dependencies {
 | 
				
			||||||
 | 
					        classpath "com.android.tools.build:gradle:4.1.1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // NOTE: Do not place your application dependencies here; they belong
 | 
				
			||||||
 | 
					        // in the individual module build.gradle files
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					allprojects {
 | 
				
			||||||
 | 
					    repositories {
 | 
				
			||||||
 | 
					        google()
 | 
				
			||||||
 | 
					        jcenter()
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					task clean(type: Delete) {
 | 
				
			||||||
 | 
					    delete rootProject.buildDir
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										10
									
								
								app/local.properties
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,10 @@
 | 
				
			|||||||
 | 
					## This file is automatically generated by Android Studio.
 | 
				
			||||||
 | 
					# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This file should *NOT* be checked into Version Control Systems,
 | 
				
			||||||
 | 
					# as it contains information specific to your local configuration.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Location of the SDK. This is only used by Gradle.
 | 
				
			||||||
 | 
					# For customization when using a Version Control System, please read the
 | 
				
			||||||
 | 
					# header note.
 | 
				
			||||||
 | 
					sdk.dir=/home/roypur/Android/Sdk
 | 
				
			||||||
							
								
								
									
										2
									
								
								app/settings.gradle
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,2 @@
 | 
				
			|||||||
 | 
					include ':app'
 | 
				
			||||||
 | 
					rootProject.name = "Proxy Stream"
 | 
				
			||||||