即使关闭应用程序,我也想在屏幕上显示gif图像 [英] I want to show gif image show on screen even when app is closed
问题描述
通过鼠标单击,您可以实现两项:
With a mouse click, you implement two things:
- 声音正在播放
- GIF图片正在显示
即使我关闭正在使用服务的应用程序,我也试图在屏幕上显示GIF,但是由于声音在GIF图像出现时一直在播放,所以找不到解决方法.
I'm trying to show the GIF on the screen even when I close the app I'm using the services but because the sound keeps playing while the GIF image appears, I can not find the solution.
TheService.java(CODE)
package gallery.suitapps.catwalking;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.media.MediaPlayer;
import android.media.SoundPool;
import android.os.Build;
import android.os.IBinder;
import android.provider.Settings;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;
import pl.droidsonroids.gif.GifImageView;
public class TheService extends Service {
final class MyThreadClass implements Runnable{
int service_id;
MyThreadClass(int service_id){
this.service_id=service_id;
}
@Override
public void run() {
}
}
SoundPool soundPool = null;
private int[] f10685s;
MainActivity main = new MainActivity();
public MediaPlayer player;
Context context;
@Override
public void onCreate() {
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Toast.makeText(this,"Service Starts" , Toast.LENGTH_SHORT).show();
player = MediaPlayer.create(this,R.raw.sound2);
player.setLooping(true);
player.start();
MainActivity.imageView.setImageResource(R.drawable.cat_gif);
return START_STICKY;
}
@Override
public void onDestroy() {
Toast.makeText(this,"Service Stops" , Toast.LENGTH_SHORT).show();
player.stop();
MainActivity.imageView.setImageResource(R.drawable.ic_launcher_background);
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
MainActivity.java(CODE)
package gallery.suitapps.catwalking;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import pl.droidsonroids.gif.GifImageView;
public class MainActivity extends AppCompatActivity {
public static GifImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = findViewById(R.id.catgif);
}
public void startService (View view){
Intent intent = new Intent(this,TheService.class);
startService(intent);
// imageView.setImageResource(R.drawable.cat_gif);
}
public void stopService (View view){
Intent intent = new Intent(this,TheService.class);
stopService(intent);
}
}
activity_main.xml
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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=".MainActivity">
<Button
android:id="@+id/startService"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="Start Service"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.501"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.134"
android:onClick="startService"/>
<Button
android:id="@+id/stopService"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="Stop Service"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.502"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.362"
android:onClick="stopService"/>
<pl.droidsonroids.gif.GifImageView
android:id="@+id/catgif"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher_background"
android:background="@android:color/holo_blue_dark"
/>
</android.support.constraint.ConstraintLayout>
推荐答案
根据您的要求,您需要实施系统窗口 服务类别中的警报,以在应用程序处于运行状态时在后台显示图像 关闭
According to your requirement you need to implement system window alert in service class to show image in background when the app is closed
这是满足您要求的解决方案.
This is the solution for your requirement.
在manifest
中添加此
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
然后在启动器activity
或任何基本活动中添加这些权限
Then in your launcher activity
or any base activity add these permissions
private static final int CODE_DRAW_OVER_OTHER_APP_PERMISSION = 2084;
在onCreate()
中添加此
if (SDK_INT >= Build.VERSION_CODES.M && !Settings.canDrawOverlays(this)) {
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, CODE_DRAW_OVER_OTHER_APP_PERMISSION);
//finish();
}
处理请求权限
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CODE_DRAW_OVER_OTHER_APP_PERMISSION) {
if (SDK_INT >= Build.VERSION_CODES.M && !Settings.canDrawOverlays(this)) {
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, CODE_DRAW_OVER_OTHER_APP_PERMISSION);
} else {
// do stuff here
}
}
}
并在service
类中执行此操作,请检查下面的链接并分别进行操作
and do this in service
class check the link below and do your stuff respectively
https://medium.com/@kevalpatel2106/create-chat-heads-like-facebook-messenger-32f7f1a62064
其中image_layout
. xml是
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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=".MainActivity">
<pl.droidsonroids.gif.GifImageView
android:id="@+id/catgif"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher_background"
android:background="@android:color/holo_blue_dark"
/>
</android.support.constraint.ConstraintLayout>
更新:-您可以在image_layout文件中进行更改,以在屏幕上显示任何大小和重力的GIF 您可以使用
Update:- You can make changed in image_layout file to show your GIF any size and gravity in the screen You can make changes with
android:layout_width="any_size"
android:layout_height="any_size"
这篇关于即使关闭应用程序,我也想在屏幕上显示gif图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!