Browse Source

Initial work of the game selector.

Miku AuahDark 3 years ago
parent
commit
2a461594a7

+ 6 - 0
app/build.gradle

@@ -41,6 +41,12 @@ android {
             java {
             java {
                 srcDir 'src/main/cpp/megasource/libs/SDL2/android-project/app/src/main/java'
                 srcDir 'src/main/cpp/megasource/libs/SDL2/android-project/app/src/main/java'
                 srcDir 'src/main/java'
                 srcDir 'src/main/java'
+                srcDir 'src/main/cpp/love/src/libraries/luahttps/src/android/java'
+            }
+        }
+        normal {
+            java {
+                srcDir 'src/normal/java'
             }
             }
         }
         }
     }
     }

+ 1 - 0
app/src/main/AndroidManifest.xml

@@ -26,6 +26,7 @@
         android:allowBackup="true"
         android:allowBackup="true"
         android:icon="@drawable/love"
         android:icon="@drawable/love"
         android:label="LÖVE for Android">
         android:label="LÖVE for Android">
+        <!-- You don't have to change the activity class unless you have special needs! !-->
         <activity
         <activity
             android:name="org.love2d.android.GameActivity"
             android:name="org.love2d.android.GameActivity"
             android:exported="true"
             android:exported="true"

+ 10 - 5
app/src/main/java/org/love2d/android/GameActivity.java

@@ -90,9 +90,10 @@ public class GameActivity extends SDLActivity {
         }
         }
 
 
         currentGameInfo = new GameInfo();
         currentGameInfo = new GameInfo();
+        Intent intent = getIntent();
 
 
-        handleIntent(getIntent());
         super.onCreate(savedInstanceState);
         super.onCreate(savedInstanceState);
+        handleIntent(intent);
 
 
         // Set low-latency audio values
         // Set low-latency audio values
         nativeSetDefaultStreamValues(getAudioFreq(), getAudioSMP());
         nativeSetDefaultStreamValues(getAudioFreq(), getAudioSMP());
@@ -105,7 +106,7 @@ public class GameActivity extends SDLActivity {
 
 
         if (delayedFd != -1) {
         if (delayedFd != -1) {
             // This delayed fd is only sent if an embedded game is present.
             // This delayed fd is only sent if an embedded game is present.
-            SDLActivity.onNativeDropFile("love2d://fd/" + delayedFd);
+            sendFileDescriptorAsDroppedFile(delayedFd);
             delayedFd = -1;
             delayedFd = -1;
         }
         }
     }
     }
@@ -302,6 +303,12 @@ public class GameActivity extends SDLActivity {
         return false;
         return false;
     }
     }
 
 
+    public void sendFileDescriptorAsDroppedFile(int fd) {
+        if (fd != -1) {
+            SDLActivity.onNativeDropFile("love2d://fd/" + fd);
+        }
+    }
+
     private void handleIntent(Intent intent) {
     private void handleIntent(Intent intent) {
         Uri game = intent.getData();
         Uri game = intent.getData();
         if (game == null) {
         if (game == null) {
@@ -321,9 +328,7 @@ public class GameActivity extends SDLActivity {
         } else {
         } else {
             // Game is already running. Send it as dropped file.
             // Game is already running. Send it as dropped file.
             int fd = convertToFileDescriptor(game);
             int fd = convertToFileDescriptor(game);
-            if (fd != -1) {
-                SDLActivity.onNativeDropFile("love2d://fd/" + fd);
-            }
+            sendFileDescriptorAsDroppedFile(fd);
         }
         }
     }
     }
 
 

+ 7 - 4
app/src/normal/AndroidManifest.xml

@@ -1,24 +1,27 @@
 <?xml version="1.0" encoding="utf-8"?>
 <?xml version="1.0" encoding="utf-8"?>
-<manifest
-    xmlns:android="http://schemas.android.com/apk/res/android"
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     xmlns:tools="http://schemas.android.com/tools"
     package="org.love2d.android">
     package="org.love2d.android">
 
 
     <application android:icon="@drawable/love">
     <application android:icon="@drawable/love">
         <activity
         <activity
-            android:name=".MainActivity"
+            android:name="org.love2d.android.MainActivity"
             android:exported="true"
             android:exported="true"
-            android:launchMode="singleTask" >
+            android:launchMode="singleTask">
             <intent-filter>
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
             </intent-filter>
         </activity>
         </activity>
+        <!-- Important: Do not change the activity class name! !-->
         <activity
         <activity
             android:name="org.love2d.android.GameActivity"
             android:name="org.love2d.android.GameActivity"
             android:exported="false"
             android:exported="false"
             tools:replace="android:exported">
             tools:replace="android:exported">
             <intent-filter tools:node="removeAll" />
             <intent-filter tools:node="removeAll" />
+            <intent-filter>
+                <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
+            </intent-filter>
         </activity>
         </activity>
     </application>
     </application>
 </manifest>
 </manifest>

+ 0 - 47
app/src/normal/java/org/love2d/android/FirstFragment.java

@@ -1,47 +0,0 @@
-package org.love2d.android;
-
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import androidx.annotation.NonNull;
-import androidx.fragment.app.Fragment;
-import androidx.navigation.fragment.NavHostFragment;
-
-import org.love2d.android.databinding.FragmentFirstBinding;
-
-public class FirstFragment extends Fragment {
-
-    private FragmentFirstBinding binding;
-
-    @Override
-    public View onCreateView(
-            LayoutInflater inflater, ViewGroup container,
-            Bundle savedInstanceState
-    ) {
-
-        binding = FragmentFirstBinding.inflate(inflater, container, false);
-        return binding.getRoot();
-
-    }
-
-    public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
-        super.onViewCreated(view, savedInstanceState);
-
-        binding.buttonFirst.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View view) {
-                NavHostFragment.findNavController(FirstFragment.this)
-                        .navigate(R.id.action_FirstFragment_to_SecondFragment);
-            }
-        });
-    }
-
-    @Override
-    public void onDestroyView() {
-        super.onDestroyView();
-        binding = null;
-    }
-
-}

+ 2 - 39
app/src/normal/java/org/love2d/android/MainActivity.java

@@ -1,51 +1,14 @@
 package org.love2d.android;
 package org.love2d.android;
 
 
-import android.os.Bundle;
-
-import com.google.android.material.snackbar.Snackbar;
-
 import androidx.appcompat.app.AppCompatActivity;
 import androidx.appcompat.app.AppCompatActivity;
 
 
-import android.view.View;
-
-import androidx.navigation.NavController;
-import androidx.navigation.Navigation;
-import androidx.navigation.ui.AppBarConfiguration;
-import androidx.navigation.ui.NavigationUI;
-
-import org.love2d.android.databinding.ActivityMainBinding;
+import android.os.Bundle;
 
 
 public class MainActivity extends AppCompatActivity {
 public class MainActivity extends AppCompatActivity {
 
 
-    private AppBarConfiguration appBarConfiguration;
-    private ActivityMainBinding binding;
-
     @Override
     @Override
     protected void onCreate(Bundle savedInstanceState) {
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         super.onCreate(savedInstanceState);
-
-        binding = ActivityMainBinding.inflate(getLayoutInflater());
-        setContentView(binding.getRoot());
-
-        setSupportActionBar(binding.toolbar);
-
-        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main);
-        appBarConfiguration = new AppBarConfiguration.Builder(navController.getGraph()).build();
-        NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
-
-        binding.fab.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View view) {
-                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
-                        .setAction("Action", null).show();
-            }
-        });
-    }
-
-    @Override
-    public boolean onSupportNavigateUp() {
-        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main);
-        return NavigationUI.navigateUp(navController, appBarConfiguration)
-                || super.onSupportNavigateUp();
+        setContentView(R.layout.activity_main);
     }
     }
 }
 }

+ 0 - 47
app/src/normal/java/org/love2d/android/SecondFragment.java

@@ -1,47 +0,0 @@
-package org.love2d.android;
-
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import androidx.annotation.NonNull;
-import androidx.fragment.app.Fragment;
-import androidx.navigation.fragment.NavHostFragment;
-
-import org.love2d.android.databinding.FragmentSecondBinding;
-
-public class SecondFragment extends Fragment {
-
-    private FragmentSecondBinding binding;
-
-    @Override
-    public View onCreateView(
-            LayoutInflater inflater, ViewGroup container,
-            Bundle savedInstanceState
-    ) {
-
-        binding = FragmentSecondBinding.inflate(inflater, container, false);
-        return binding.getRoot();
-
-    }
-
-    public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
-        super.onViewCreated(view, savedInstanceState);
-
-        binding.buttonSecond.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View view) {
-                NavHostFragment.findNavController(SecondFragment.this)
-                        .navigate(R.id.action_SecondFragment_to_FirstFragment);
-            }
-        });
-    }
-
-    @Override
-    public void onDestroyView() {
-        super.onDestroyView();
-        binding = null;
-    }
-
-}

+ 5 - 0
app/src/normal/res/drawable/ic_baseline_folder_32.xml

@@ -0,0 +1,5 @@
+<vector android:height="32dp" android:tint="?attr/colorControlNormal"
+    android:viewportHeight="24" android:viewportWidth="24"
+    android:width="32dp" xmlns:android="http://schemas.android.com/apk/res/android">
+    <path android:fillColor="@android:color/white" android:pathData="M10,4H4c-1.1,0 -1.99,0.9 -1.99,2L2,18c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2V8c0,-1.1 -0.9,-2 -2,-2h-8l-2,-2z"/>
+</vector>

+ 5 - 0
app/src/normal/res/drawable/ic_baseline_info_32.xml

@@ -0,0 +1,5 @@
+<vector android:height="32dp" android:tint="?attr/colorControlNormal"
+    android:viewportHeight="24" android:viewportWidth="24"
+    android:width="32dp" xmlns:android="http://schemas.android.com/apk/res/android">
+    <path android:fillColor="@android:color/white" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM13,17h-2v-6h2v6zM13,9h-2L11,7h2v2z"/>
+</vector>

+ 5 - 0
app/src/normal/res/drawable/ic_baseline_insert_drive_file_32.xml

@@ -0,0 +1,5 @@
+<vector android:autoMirrored="true" android:height="32dp"
+    android:tint="?attr/colorControlNormal" android:viewportHeight="24"
+    android:viewportWidth="24" android:width="32dp" xmlns:android="http://schemas.android.com/apk/res/android">
+    <path android:fillColor="@android:color/white" android:pathData="M6,2c-1.1,0 -1.99,0.9 -1.99,2L4,20c0,1.1 0.89,2 1.99,2L18,22c1.1,0 2,-0.9 2,-2L20,8l-6,-6L6,2zM13,9L13,3.5L18.5,9L13,9z"/>
+</vector>

+ 9 - 27
app/src/normal/res/layout/activity_main.xml

@@ -1,34 +1,16 @@
 <?xml version="1.0" encoding="utf-8"?>
 <?xml version="1.0" encoding="utf-8"?>
-<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:layout_height="match_parent"
     tools:context=".MainActivity">
     tools:context=".MainActivity">
 
 
-    <com.google.android.material.appbar.AppBarLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:theme="@style/Theme.LÖVEForAndroid.AppBarOverlay">
-
-        <androidx.appcompat.widget.Toolbar
-            android:id="@+id/toolbar"
-            android:layout_width="match_parent"
-            android:layout_height="?attr/actionBarSize"
-            android:background="?attr/colorPrimary"
-            app:popupTheme="@style/Theme.LÖVEForAndroid.PopupOverlay" />
-
-    </com.google.android.material.appbar.AppBarLayout>
-
-    <include layout="@layout/content_main" />
-
-    <com.google.android.material.floatingactionbutton.FloatingActionButton
-        android:id="@+id/fab"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_gravity="bottom|end"
-        android:layout_marginEnd="@dimen/fab_margin"
-        android:layout_marginBottom="16dp"
-        app:srcCompat="@android:drawable/ic_dialog_email" />
-
-</androidx.coordinatorlayout.widget.CoordinatorLayout>
+    <androidx.recyclerview.widget.RecyclerView
+        android:layout_width="0dp"
+        android:layout_height="0dp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 0 - 19
app/src/normal/res/layout/content_main.xml

@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    app:layout_behavior="@string/appbar_scrolling_view_behavior">
-
-    <fragment
-        android:id="@+id/nav_host_fragment_content_main"
-        android:name="androidx.navigation.fragment.NavHostFragment"
-        android:layout_width="0dp"
-        android:layout_height="0dp"
-        app:defaultNavHost="true"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintLeft_toLeftOf="parent"
-        app:layout_constraintRight_toRightOf="parent"
-        app:layout_constraintTop_toTopOf="parent"
-        app:navGraph="@navigation/nav_graph" />
-</androidx.constraintlayout.widget.ConstraintLayout>

+ 0 - 28
app/src/normal/res/layout/fragment_first.xml

@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    tools:context=".FirstFragment">
-
-    <TextView
-        android:id="@+id/textview_first"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="@string/hello_first_fragment"
-        app:layout_constraintBottom_toTopOf="@id/button_first"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent" />
-
-    <Button
-        android:id="@+id/button_first"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="@string/next"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@id/textview_first" />
-</androidx.constraintlayout.widget.ConstraintLayout>

+ 0 - 27
app/src/normal/res/layout/fragment_second.xml

@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    tools:context=".SecondFragment">
-
-    <TextView
-        android:id="@+id/textview_second"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        app:layout_constraintBottom_toTopOf="@id/button_second"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent" />
-
-    <Button
-        android:id="@+id/button_second"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="@string/previous"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@id/textview_second" />
-</androidx.constraintlayout.widget.ConstraintLayout>

+ 1 - 0
app/src/normal/res/values/strings.xml

@@ -0,0 +1 @@
+<resources></resources>