Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在后台服务的系统覆盖中显示横幅/本机广告_Java_Android_Admob_Ads - Fatal编程技术网

Java 在后台服务的系统覆盖中显示横幅/本机广告

Java 在后台服务的系统覆盖中显示横幅/本机广告,java,android,admob,ads,Java,Android,Admob,Ads,我一直在开发一个android应用程序,它几乎完成了。基本上,我在其中使用了系统覆盖,我想显示覆盖本身的广告。我的应用程序通过alarm manager向服务发送警报,该服务显示系统覆盖,我希望在覆盖中显示广告。我成功地显示了系统覆盖,但问题是我想在系统覆盖中显示广告(任何横幅或本机),就像来电时Truecaller所做的那样。到目前为止,我所尝试的是- private void SetParametersToDisplayShort() { if(allowAlerts) {

我一直在开发一个android应用程序,它几乎完成了。基本上,我在其中使用了系统覆盖,我想显示覆盖本身的广告。我的应用程序通过alarm manager向服务发送警报,该服务显示系统覆盖,我希望在覆盖中显示广告。我成功地显示了系统覆盖,但问题是我想在系统覆盖中显示广告(任何横幅或本机),就像来电时Truecaller所做的那样。到目前为止,我所尝试的是-

 private void SetParametersToDisplayShort() {
    if(allowAlerts)
    {
        if(allowAlertsShort)
        {
            windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
            WindowManager.LayoutParams params;
            if(Build.VERSION.SDK_INT < Build.VERSION_CODES.O)
            {
                params = new WindowManager.LayoutParams(
                        WindowManager.LayoutParams.MATCH_PARENT,
                        WindowManager.LayoutParams.MATCH_PARENT,
                        WindowManager.LayoutParams.TYPE_SYSTEM_ERROR,
                        WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
                        PixelFormat.TRANSLUCENT);
            }
            else
            {
                params = new WindowManager.LayoutParams(
                        WindowManager.LayoutParams.MATCH_PARENT,
                        WindowManager.LayoutParams.MATCH_PARENT,
                        WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
                        WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
                        PixelFormat.TRANSLUCENT);
            }
            params.gravity = Gravity.CENTER;
            params.x = 0;
            params.y = 0;
            ShortAlertView = (RelativeLayout) View.inflate(getApplicationContext(), R.layout.activity_alert_dialog, null);

            MobileAds.initialize(getApplicationContext(), initializationStatus ->
            {
                CardView template = ShortAlertView.findViewById(R.id.ad_container);
                refreshAd(template);
                template.setVisibility(View.VISIBLE);
            });

            windowManager.addView(ShortAlertView, params);
            TextView time = ShortAlertView.findViewById(R.id.text_time);
            SharedPreferences sharedPreferences = getSharedPreferences("Main", MODE_MULTI_PROCESS);
            long Time = sharedPreferences.getLong("ShortAlertTimeCountDown", 20000);
            long RemainingTime = Time - System.currentTimeMillis();
            countDownTimer = new CountDownTimer(RemainingTime, 1000) {
                @Override
                public void onTick(long l) {
                    int secondsShort = (int) (l / 1000) % 60;
                    int minutesShort = (int) ((l / (1000 * 60)) % 60);
                    String timeLeft = minutesShort + ":" + secondsShort;
                    time.setText(timeLeft);
                }
                @Override
                public void onFinish() {
                    try {
                        if(AllowNotificationVibrate)
                        {
                            Vibrate();
                        }
                        windowManager.removeView(ShortAlertView);
                    }
                    catch (Exception ignored)
                    {

                    }
                    if(isDeviceNotLocked())
                    {
                        startMainAlarm();
                    }
                    if(AllowNotificationVibrate)
                    {
                        Vibrate();
                    }
                    if(AllowNotificationSound)
                    {
                        StartMediaPlayerClose();
                    }
                    stopSelf();
                }
            };
            countDownTimer.start();
        }
        else
        {
            startNotificationShort();
            if(isDeviceNotLocked())
            {
                startMainAlarm();
            }
            stopSelf();
        }
    }
}
private void refreshAd(CardView cardView)
{
    AdLoader.Builder builder = new AdLoader.Builder(this, getString(R.string.ad_native_id));
    builder.forNativeAd(unifiedNativeAd -> {
        if(nativeAd != null)
        {
            nativeAd = unifiedNativeAd;
        }
        NativeAdView adView = (NativeAdView) View.inflate(getApplicationContext(), R.layout.native_ad_layout_small, null);((LayoutInflater)getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.native_ad_layout, null);
        populateNativeAd(unifiedNativeAd, adView);
        cardView.removeAllViews();
        cardView.addView(adView);
    });
    AdLoader adLoader = builder.withAdListener(new AdListener() {
        @Override
        public void onAdClosed() {
            super.onAdClosed();
        }

        @Override
        public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
            super.onAdFailedToLoad(loadAdError);
        }

        @Override
        public void onAdOpened() {
            super.onAdOpened();
        }

        @Override
        public void onAdLoaded() {
            super.onAdLoaded();
        }

        @Override
        public void onAdClicked() {
            super.onAdClicked();
        }

        @Override
        public void onAdImpression() {
            super.onAdImpression();
        }
    }).build();

    AdRequest adRequest = new AdRequest.Builder().build();
    adLoader.loadAd(adRequest);
}

private void populateNativeAd(NativeAd nativeAd, NativeAdView adView)
{
    adView.setHeadlineView(adView.findViewById(R.id.ad_headline));
    adView.setAdvertiserView(adView.findViewById(R.id.ad_advertiser));
    adView.setBodyView(adView.findViewById(R.id.ad_body_text));
    adView.setMediaView(adView.findViewById(R.id.media_view));
    adView.setCallToActionView(adView.findViewById(R.id.add_call_to_action));
    adView.setIconView(adView.findViewById(R.id.adv_icon));
    adView.getMediaView().setMediaContent(nativeAd.getMediaContent());
    ((TextView)adView.getHeadlineView()).setText(nativeAd.getHeadline());

    if(nativeAd.getBody() == null)
    {
        adView.getBodyView().setVisibility(View.INVISIBLE);
    }
    else
    {
        ((TextView)adView.getBodyView()).setText(nativeAd.getBody());
        adView.getBodyView().setVisibility(View.VISIBLE);
    }

    if(nativeAd.getAdvertiser() == null)
    {
        adView.getAdvertiserView().setVisibility(View.INVISIBLE);
    }
    else
    {
        ((TextView)adView.getAdvertiserView()).setText(nativeAd.getAdvertiser());
        adView.getAdvertiserView().setVisibility(View.VISIBLE);
    }

    try {
        adView.setStarRatingView(adView.findViewById(R.id.star_rating));
        if(nativeAd.getStarRating() == null)
        {
            adView.getStarRatingView().setVisibility(View.INVISIBLE);
        }
        else
        {
            ((RatingBar)adView.getStarRatingView()).setRating(nativeAd.getStarRating().floatValue());
            adView.getStarRatingView().setVisibility(View.VISIBLE);
        }
    }
    catch (Exception e)
    {
        Log.e("TAG", e.toString());
    }

    if(nativeAd.getIcon() == null)
    {
        adView.getIconView().setVisibility(View.INVISIBLE);
    }
    else
    {
        ((ImageView)adView.getIconView()).setImageDrawable(nativeAd.getIcon().getDrawable());
        adView.getIconView().setVisibility(View.VISIBLE);
    }
    if(nativeAd.getCallToAction() == null)
    {
        adView.getCallToActionView().setVisibility(View.INVISIBLE);
    }
    else
    {
        ((Button)adView.getCallToActionView()).setText(nativeAd.getCallToAction());
        adView.getCallToActionView().setVisibility(View.VISIBLE);
    }
    adView.setNativeAd(nativeAd);
}
private void SetParametersToDisplayShort(){
if(allowAlerts)
{
if(allowAlertsShort)
{
windowManager=(windowManager)getSystemService(窗口服务);
WindowManager.LayoutParams参数;
if(Build.VERSION.SDK\u INT
{
CardView模板=ShortAlertView.findViewById(R.id.ad_容器);
refreshAd(模板);
template.setVisibility(View.VISIBLE);
});
windowManager.addView(ShortAlertView,参数);
TextView time=ShortAlertView.findViewById(R.id.text\u time);
SharedPreferences SharedPreferences=getSharedPreferences(“主”,模式多进程);
long Time=SharedReferences.getLong(“ShortAlertTimeCountDown”,20000);
long RemainingTime=Time-System.currentTimeMillis();
倒计时=新的倒计时(剩余时间,1000){
@凌驾
公共空白条(长l){
整数秒短=(整数)(l/1000)%60;
int分钟短=(int)((l/(1000*60))%60);
字符串timeLeft=minuteshhort+“:”+secondsShort;
time.setText(timeLeft);
}
@凌驾
公共无效onFinish(){
试一试{
如果(允许振动)
{
振动();
}
windowManager.removeView(ShortAlertView);
}
捕获(忽略异常)
{
}
如果(isDeviceNotLocked())
{
startMainAlarm();
}
如果(允许振动)
{
振动();
}
如果(AllowNotificationsSound)
{
StartMediaPlayerClose();
}
stopSelf();
}
};
countDownTimer.start();
}
其他的
{
startNotificationShort();
如果(isDeviceNotLocked())
{
startMainAlarm();
}
stopSelf();
}
}
}
私有无效刷新AD(CardView CardView)
{
AdLoader.Builder=newadloader.Builder(这个,getString(R.string.ad_native_id));
builder.forNativeAd(统一导航->{
如果(nativeAd!=null)
{
nativeAd=统一的主动权;
}
NativeAdView adView=(NativeAdView)视图。充气(getApplicationContext(),R.layout.native_ad_layout_small,null);((LayoutFlater)getApplicationContext().getSystemService(Context.layout_充气器_SERVICE))。充气(R.layout.native_ad_layout,null);
大众化领导(统一领导、咨询);
removeAllViews();
添加视图(adView);
});
AdLoader AdLoader=builder.withAdListener(新的AdListener(){
@凌驾
已关闭的()上的公共无效{
super.onAdClosed();
}
@凌驾
ADFailedToLoad(@NonNull loadError loadError)上的公共无效{
super.onAdFailedToLoad(装载机错误);
}
@凌驾
公开作废{
super.onadopend();
}
@凌驾
已加载的公共无效(){
super.onadload();
}
@凌驾
已单击()的公共无效项{
super.onAdClicked();
}
@凌驾
公开声明{
super.onAdImpression();
}
}).build();
AdRequest AdRequest=新建AdRequest.Builder().build();
adLoader.loaded(adRequest);
}
私有无效人口(NativeAd NativeAd,NativeAdView adView)
{
adView.setHeadlineView(adView.findviewbyd(R.id.ad_headline));
adView.setAdvertiserView(adView.findViewById(R.id.ad_广告商));
adView.setBodyView(adView.findViewById(R.id.ad_body_text));
adView.setMediaView(adView.findVi