导航菜单

页面标题

页面副标题

050 IP Phone v2.3.0 - RemoteControlService.java 源代码

正在查看: 050 IP Phone v2.3.0 应用的 RemoteControlService.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package com.ntt.voip.android.extension.control;

import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.PendingIntent;
import android.app.Service;
import android.content.ComponentName;
import android.content.Intent;
import android.media.AudioManager;
import android.os.IBinder;
import android.support.v4.media.MediaMetadataCompat;
import android.support.v4.media.session.MediaSessionCompat;
import android.support.v4.media.session.PlaybackStateCompat;
import com.oki.esound.EsEngineJni;
import t4.j;
import t4.z;
import w3.d;
import w3.f;

@SuppressLint({"InlinedApi"})
@TargetApi(EsEngineJni.ES_DTMF_CODE_C)
public class RemoteControlService extends Service implements v3.c {
    private static int t0 = 0;
    private static boolean u0 = false;
    private f Y;
    private ComponentName y;
    private AudioManager x = null;
    private v3.a X = null;
    private MediaSessionCompat Z = null;
    private b s0 = b.NoFocusNoDuck;

    enum b {
        NoFocusNoDuck,
        NoFocusCanDuck,
        Focused
    }

    private final class c extends MediaSessionCompat.Callback {
        private c() {
        }

        public boolean onMediaButtonEvent(Intent intent) {
            v3.b.a(RemoteControlService.this.getApplicationContext(), intent, "onMediaButtonEvent");
            return true;
        }
    }

    private void c() {
        this.Y.h(d.ACCEPT_CALL.c(), null);
    }

    private void d() {
        this.Y.h(d.CANCEL_CALL.c(), null);
    }

    private void e() {
        MediaSessionCompat mediaSessionCompat = this.Z;
        if (mediaSessionCompat != null) {
            mediaSessionCompat.setActive(false);
        }
        f();
    }

    private void f() {
        v3.a aVar;
        if (this.s0 == b.Focused && (aVar = this.X) != null && aVar.a()) {
            this.s0 = b.NoFocusNoDuck;
        }
        z.a("RemoteControlService", "giveUpAudioFocus: AudioFocus=[" + this.s0.name() + "]");
    }

    private void g() {
        m();
        MediaSessionCompat mediaSessionCompat = this.Z;
        if (mediaSessionCompat != null) {
            mediaSessionCompat.setActive(true);
        }
    }

    private void h(w3.b bVar) {
        g();
        k(3);
        n(bVar);
    }

    private void i() {
        n(null);
        k(1);
        e();
    }

    private void j() {
        this.Y.h(d.REJECT_CALL.c(), null);
    }

    private void k(int i) {
        if (this.Z != null) {
            PlaybackStateCompat.Builder builder = new PlaybackStateCompat.Builder();
            builder.setState(i, -1L, 0.0f);
            this.Z.setPlaybackState(builder.build());
        }
    }

    private void l() {
        this.Y.h(d.END_CALL.c(), null);
    }

    private void m() {
        v3.a aVar;
        b bVar = this.s0;
        b bVar2 = b.Focused;
        if (bVar != bVar2 && (aVar = this.X) != null && aVar.b()) {
            this.s0 = bVar2;
        }
        z.a("RemoteControlService", "tryToGetAudioFocus: AudioFocus=[" + this.s0.name() + "]");
    }

    private void n(w3.b bVar) {
        MediaMetadataCompat mediaMetadataCompat;
        if (bVar != null) {
            if (bVar.f()) {
                bVar.l(getString(v3.f.a));
            }
            mediaMetadataCompat = new MediaMetadataCompat.Builder().putString("android.media.metadata.ALBUM", bVar.a()).putString("android.media.metadata.ARTIST", bVar.a()).putString("android.media.metadata.TITLE", bVar.c()).build();
        } else {
            mediaMetadataCompat = null;
        }
        MediaSessionCompat mediaSessionCompat = this.Z;
        if (mediaSessionCompat != null) {
            mediaSessionCompat.setMetadata(mediaMetadataCompat);
        }
    }

    @Override
    public void a() {
        z.a("RemoteControlService", "onGainedAudioFocus.");
        this.s0 = b.Focused;
    }

    @Override
    public void b(boolean z) {
        z.a("RemoteControlService", "onLostAudioFocus: canDuck=[" + z + "]");
        this.s0 = z ? b.NoFocusCanDuck : b.NoFocusNoDuck;
    }

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        u0 = true;
        t0 = 0;
        z.n("RemoteControlService", "onCreate");
        super.onCreate();
        AudioManager audioManager = (AudioManager) getSystemService("audio");
        this.x = audioManager;
        this.X = new v3.a(audioManager, this);
        this.y = new ComponentName(getPackageName(), MediaActionReceiver.class.getName());
        f fVar = new f(getApplicationContext());
        this.Y = fVar;
        fVar.g();
        MediaSessionCompat mediaSessionCompat = new MediaSessionCompat(getApplicationContext(), "RemoteControlService", this.y, (PendingIntent) null);
        this.Z = mediaSessionCompat;
        mediaSessionCompat.setCallback(new c());
    }

    @Override
    public void onDestroy() {
        u0 = false;
        t0 = 0;
        i();
        f fVar = this.Y;
        if (fVar != null) {
            fVar.j();
        }
        MediaSessionCompat mediaSessionCompat = this.Z;
        if (mediaSessionCompat != null) {
            mediaSessionCompat.release();
        }
        z.a("RemoteControlService", "onDestroy.");
        super.onDestroy();
    }

    @Override
    public int onStartCommand(Intent intent, int i, int i8) {
        String action = intent == null ? null : intent.getAction();
        z.n("RemoteControlService", "onStartCommand action: " + action + " curMode: " + v3.b.b(t0));
        if ("com.ntt.voip.android.extension.action.START".equals(action)) {
            w3.b bVar = (w3.b) j.g(intent, "call_state", w3.b.class);
            t0 = bVar.b();
            int b8 = bVar.b();
            if (b8 == 3 || b8 == 4 || b8 == 5) {
                h(bVar);
                return 2;
            }
            stopSelf();
            return 2;
        }
        if ("com.ntt.voip.android.extension.action.STOP".equals(action)) {
            t0 = 0;
            stopSelf();
            return 2;
        }
        if (!"android.intent.action.MEDIA_BUTTON".equals(action)) {
            return 2;
        }
        int intExtra = intent.getIntExtra("key_code", -1);
        if (intExtra != 6) {
            if (intExtra != 85) {
                if (intExtra != 87 && intExtra != 88) {
                    if (intExtra != 126 && intExtra != 127) {
                        return 2;
                    }
                }
            }
            int i9 = t0;
            if (i9 == 3) {
                return 2;
            }
            if (i9 == 4) {
                c();
                return 2;
            }
            if (i9 == 5) {
                return 2;
            }
            stopSelf();
            return 2;
        }
        int i10 = t0;
        if (i10 == 3) {
            d();
            return 2;
        }
        if (i10 == 4) {
            j();
            return 2;
        }
        if (i10 != 5) {
            stopSelf();
            return 2;
        }
        l();
        return 2;
    }
}