package com.javispedro.wallmotion; import android.app.WallpaperManager; import android.content.ComponentName; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.View; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; import com.google.android.material.floatingactionbutton.FloatingActionButton; public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity"; private Renderer renderer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); FloatingActionButton fab = findViewById(R.id.set_wallpaper); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { openWallpaperSelector(); } }); fab = findViewById(R.id.set_file); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { openVideoFileSelector(); } }); SurfaceView view = findViewById(R.id.wallpaper_view); view.getHolder().addCallback(new WallpaperViewCallback()); renderer = new Renderer(this); } @Override protected void onDestroy() { renderer.stop(); renderer = null; super.onDestroy(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { openSettingsActivity(); return true; } return super.onOptionsItemSelected(item); } @Override protected void onResume() { super.onResume(); } @Override protected void onPause() { renderer.stop(); super.onPause(); } private class WallpaperViewCallback implements SurfaceHolder.Callback { @Override public void surfaceCreated(SurfaceHolder holder) { Log.d(TAG, "surfaceCreated"); renderer.start(holder.getSurface()); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } @Override public void surfaceDestroyed(SurfaceHolder holder) { Log.d(TAG, "surfaceDestroyed"); renderer.stop(); } } private void openSettingsActivity() { Intent intent = new Intent(this, SettingsActivity.class); startActivity(intent); } private void openVideoFileSelector() { Intent intent = new Intent(this, SettingsActivity.class); intent.setAction(SettingsActivity.ACTION_CHOOSE_FILE); startActivity(intent); } private void openWallpaperSelector() { Intent intent = new Intent(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER); intent.putExtra(WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT, new ComponentName(this, WallService.class)); startActivity(intent); } }