mirror of https://github.com/nextcloud/android
fix git conflicts
Signed-off-by: alperozturk <alper_ozturk@proton.me>
This commit is contained in:
parent
8e462f1b09
commit
feb76a8a9e
|
@ -8,305 +8,303 @@
|
|||
* SPDX-FileCopyrightText: 2018 Andy Scherzinger <info@andy-scherzinger.de>
|
||||
* SPDX-FileCopyrightText: 2015 ownCloud Inc.
|
||||
* SPDX-FileCopyrightText: 2013 David A. Velasco <dvelasco@solidgear.es>
|
||||
* SPDX-License-Identifier: GPL-2.0-only AND (AGPL-3.0-or-later OR GPL-2.0-only)
|
||||
* SPDX-License-Identifier: GPL-2.0-only AND AGPL-3.0-or-later
|
||||
*/
|
||||
package com.owncloud.android.media
|
||||
package com.owncloud.android.media;
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import android.os.Message
|
||||
import android.util.AttributeSet
|
||||
import android.view.KeyEvent
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.accessibility.AccessibilityEvent
|
||||
import android.view.accessibility.AccessibilityNodeInfo
|
||||
import android.widget.LinearLayout
|
||||
import android.widget.MediaController.MediaPlayerControl
|
||||
import android.widget.SeekBar
|
||||
import android.widget.SeekBar.OnSeekBarChangeListener
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.owncloud.android.MainApp
|
||||
import com.owncloud.android.R
|
||||
import com.owncloud.android.databinding.MediaControlBinding
|
||||
import com.owncloud.android.lib.common.utils.Log_OC
|
||||
import com.owncloud.android.utils.theme.ViewThemeUtils
|
||||
import java.util.Formatter
|
||||
import java.util.Locale
|
||||
import javax.inject.Inject
|
||||
import android.content.Context;
|
||||
import android.media.MediaPlayer;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.os.Message;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.accessibility.AccessibilityEvent;
|
||||
import android.view.accessibility.AccessibilityNodeInfo;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.MediaController.MediaPlayerControl;
|
||||
import android.widget.SeekBar;
|
||||
import android.widget.SeekBar.OnSeekBarChangeListener;
|
||||
|
||||
import com.owncloud.android.MainApp;
|
||||
import com.owncloud.android.R;
|
||||
import com.owncloud.android.databinding.MediaControlBinding;
|
||||
import com.owncloud.android.lib.common.utils.Log_OC;
|
||||
import com.owncloud.android.utils.theme.ViewThemeUtils;
|
||||
|
||||
import java.util.Formatter;
|
||||
import java.util.Locale;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
/**
|
||||
* View containing controls for a MediaPlayer.
|
||||
*
|
||||
*
|
||||
* View containing controls for a {@link MediaPlayer}.
|
||||
* <p>
|
||||
* Holds buttons "play / pause", "rewind", "fast forward" and a progress slider.
|
||||
*
|
||||
*
|
||||
* It synchronizes itself with the state of the MediaPlayer.
|
||||
* <p>
|
||||
* It synchronizes itself with the state of the {@link MediaPlayer}.
|
||||
*/
|
||||
class MediaControlView(context: Context, attrs: AttributeSet?) :
|
||||
LinearLayout(context, attrs),
|
||||
View.OnClickListener,
|
||||
OnSeekBarChangeListener {
|
||||
public class MediaControlView extends LinearLayout implements OnClickListener, OnSeekBarChangeListener {
|
||||
private static final String TAG = MediaControlView.class.getSimpleName();
|
||||
private static final int SHOW_PROGRESS = 1;
|
||||
|
||||
private var playerControl: MediaPlayerControl? = null
|
||||
private var binding: MediaControlBinding
|
||||
private var isDragging = false
|
||||
private MediaPlayerControl playerControl;
|
||||
private final MediaControlBinding binding;
|
||||
private boolean isDragging;
|
||||
|
||||
@Inject
|
||||
lateinit var viewThemeUtils: ViewThemeUtils
|
||||
ViewThemeUtils viewThemeUtils;
|
||||
|
||||
public override fun onFinishInflate() {
|
||||
super.onFinishInflate()
|
||||
public MediaControlView(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
|
||||
MainApp.getAppComponent().inject(this);
|
||||
|
||||
LayoutInflater inflate = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
||||
binding = MediaControlBinding.inflate(inflate, this, true);
|
||||
initControllerView();
|
||||
|
||||
setFocusable(true);
|
||||
setFocusableInTouchMode(true);
|
||||
setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);
|
||||
requestFocus();
|
||||
}
|
||||
|
||||
@Suppress("MagicNumber")
|
||||
fun setMediaPlayer(player: MediaPlayerControl?) {
|
||||
playerControl = player
|
||||
handler.sendEmptyMessage(SHOW_PROGRESS)
|
||||
|
||||
handler.postDelayed({
|
||||
updatePausePlay()
|
||||
setProgress()
|
||||
}, 100)
|
||||
@Override
|
||||
public void onFinishInflate() {
|
||||
super.onFinishInflate();
|
||||
}
|
||||
|
||||
fun stopMediaPlayerMessages() {
|
||||
handler.removeMessages(SHOW_PROGRESS)
|
||||
public void setMediaPlayer(MediaPlayerControl player) {
|
||||
playerControl = player;
|
||||
handler.sendEmptyMessage(SHOW_PROGRESS);
|
||||
handler.postDelayed(() -> {
|
||||
updatePausePlay();
|
||||
setProgress();
|
||||
}, 100);
|
||||
}
|
||||
|
||||
@Suppress("MagicNumber")
|
||||
private fun initControllerView() {
|
||||
binding.playBtn.requestFocus()
|
||||
public void stopMediaPlayerMessages() {
|
||||
handler.removeMessages(SHOW_PROGRESS);
|
||||
}
|
||||
|
||||
binding.playBtn.setOnClickListener(this)
|
||||
binding.forwardBtn.setOnClickListener(this)
|
||||
binding.rewindBtn.setOnClickListener(this)
|
||||
private void initControllerView() {
|
||||
binding.playBtn.requestFocus();
|
||||
binding.playBtn.setOnClickListener(this);
|
||||
|
||||
binding.progressBar.run {
|
||||
viewThemeUtils.platform.themeHorizontalSeekBar(this)
|
||||
setMax(1000)
|
||||
}
|
||||
binding.forwardBtn.setOnClickListener(this);
|
||||
|
||||
binding.progressBar.setOnSeekBarChangeListener(this)
|
||||
binding.rewindBtn.setOnClickListener(this);
|
||||
|
||||
viewThemeUtils.material.run {
|
||||
colorMaterialButtonPrimaryTonal(binding.rewindBtn)
|
||||
colorMaterialButtonPrimaryTonal(binding.playBtn)
|
||||
colorMaterialButtonPrimaryTonal(binding.forwardBtn)
|
||||
}
|
||||
viewThemeUtils.platform.themeHorizontalSeekBar(binding.progressBar);
|
||||
binding.progressBar.setOnSeekBarChangeListener(this);
|
||||
binding.progressBar.setMax(1000);
|
||||
}
|
||||
|
||||
/**
|
||||
* Disable pause or seek buttons if the stream cannot be paused or seeked.
|
||||
* This requires the control interface to be a MediaPlayerControlExt
|
||||
*/
|
||||
private fun disableUnsupportedButtons() {
|
||||
private void disableUnsupportedButtons() {
|
||||
try {
|
||||
if (playerControl?.canPause() == false) {
|
||||
binding.playBtn.setEnabled(false)
|
||||
if (binding != null) {
|
||||
if (!playerControl.canPause()) {
|
||||
binding.playBtn.setEnabled(false);
|
||||
}
|
||||
if (!playerControl.canSeekBackward()) {
|
||||
binding.rewindBtn.setEnabled(false);
|
||||
}
|
||||
if (!playerControl.canSeekForward()) {
|
||||
binding.forwardBtn.setEnabled(false);
|
||||
}
|
||||
}
|
||||
if (playerControl?.canSeekBackward() == false) {
|
||||
binding.rewindBtn.setEnabled(false)
|
||||
}
|
||||
if (playerControl?.canSeekForward() == false) {
|
||||
binding.forwardBtn.setEnabled(false)
|
||||
}
|
||||
} catch (ex: IncompatibleClassChangeError) {
|
||||
|
||||
} catch (IncompatibleClassChangeError ex) {
|
||||
// We were given an old version of the interface, that doesn't have
|
||||
// the canPause/canSeekXYZ methods. This is OK, it just means we
|
||||
// assume the media can be paused and seeked, and so we don't disable
|
||||
// the buttons.
|
||||
Log_OC.i(TAG, "Old media interface detected")
|
||||
Log_OC.i(TAG, "Old media interface detected");
|
||||
}
|
||||
}
|
||||
|
||||
@Suppress("MagicNumber")
|
||||
private val handler: Handler = object : Handler(Looper.getMainLooper()) {
|
||||
override fun handleMessage(msg: Message) {
|
||||
private final Handler handler = new Handler(Looper.getMainLooper()) {
|
||||
@Override
|
||||
public void handleMessage(Message msg) {
|
||||
if (msg.what == SHOW_PROGRESS) {
|
||||
updatePausePlay()
|
||||
val pos = setProgress()
|
||||
|
||||
updatePausePlay();
|
||||
int pos = setProgress();
|
||||
if (!isDragging) {
|
||||
sendMessageDelayed(obtainMessage(SHOW_PROGRESS), (1000 - pos % 1000).toLong())
|
||||
sendMessageDelayed(obtainMessage(SHOW_PROGRESS), 1000 - (pos % 1000));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
init {
|
||||
MainApp.getAppComponent().inject(this)
|
||||
private String formatTime(int timeMs) {
|
||||
int totalSeconds = timeMs / 1000;
|
||||
|
||||
val inflate = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
|
||||
binding = MediaControlBinding.inflate(inflate, this, true)
|
||||
initControllerView()
|
||||
isFocusable = true
|
||||
setFocusableInTouchMode(true)
|
||||
setDescendantFocusability(FOCUS_AFTER_DESCENDANTS)
|
||||
requestFocus()
|
||||
}
|
||||
int seconds = totalSeconds % 60;
|
||||
int minutes = (totalSeconds / 60) % 60;
|
||||
int hours = totalSeconds / 3600;
|
||||
|
||||
@Suppress("MagicNumber")
|
||||
private fun formatTime(timeMs: Int): String {
|
||||
val totalSeconds = timeMs / 1000
|
||||
val seconds = totalSeconds % 60
|
||||
val minutes = totalSeconds / 60 % 60
|
||||
val hours = totalSeconds / 3600
|
||||
val mFormatBuilder = StringBuilder()
|
||||
val mFormatter = Formatter(mFormatBuilder, Locale.getDefault())
|
||||
return if (hours > 0) {
|
||||
mFormatter.format("%d:%02d:%02d", hours, minutes, seconds).toString()
|
||||
final StringBuilder mFormatBuilder = new StringBuilder();
|
||||
final Formatter mFormatter = new Formatter(mFormatBuilder, Locale.getDefault());
|
||||
if (hours > 0) {
|
||||
return mFormatter.format("%d:%02d:%02d", hours, minutes, seconds).toString();
|
||||
} else {
|
||||
mFormatter.format("%02d:%02d", minutes, seconds).toString()
|
||||
return mFormatter.format("%02d:%02d", minutes, seconds).toString();
|
||||
}
|
||||
}
|
||||
|
||||
@Suppress("MagicNumber", "ReturnCount")
|
||||
private fun setProgress(): Int {
|
||||
var position = 0
|
||||
private int setProgress() {
|
||||
if (playerControl == null || isDragging) {
|
||||
position = 0
|
||||
return 0;
|
||||
}
|
||||
|
||||
playerControl?.let { playerControl ->
|
||||
position = playerControl.currentPosition
|
||||
val duration = playerControl.duration
|
||||
int position = playerControl.getCurrentPosition();
|
||||
int duration = playerControl.getDuration();
|
||||
if (binding != null) {
|
||||
if (duration > 0) {
|
||||
// use long to avoid overflow
|
||||
val pos = 1000L * position / duration
|
||||
binding.progressBar.progress = pos.toInt()
|
||||
long pos = 1000L * position / duration;
|
||||
binding.progressBar.setProgress((int) pos);
|
||||
}
|
||||
val percent = playerControl.bufferPercentage
|
||||
binding.progressBar.setSecondaryProgress(percent * 10)
|
||||
val endTime = if (duration > 0) formatTime(duration) else "--:--"
|
||||
binding.totalTimeText.text = endTime
|
||||
binding.currentTimeText.text = formatTime(position)
|
||||
int percent = playerControl.getBufferPercentage();
|
||||
binding.progressBar.setSecondaryProgress(percent * 10);
|
||||
|
||||
String endTime = duration > 0 ? formatTime(duration) : "--:--";
|
||||
binding.totalTimeText.setText(endTime);
|
||||
binding.currentTimeText.setText(formatTime(position));
|
||||
}
|
||||
|
||||
return position
|
||||
return position;
|
||||
}
|
||||
|
||||
override fun dispatchKeyEvent(event: KeyEvent): Boolean {
|
||||
val keyCode = event.keyCode
|
||||
val uniqueDown = (event.repeatCount == 0 && event.action == KeyEvent.ACTION_DOWN)
|
||||
@Override
|
||||
public boolean dispatchKeyEvent(KeyEvent event) {
|
||||
int keyCode = event.getKeyCode();
|
||||
final boolean uniqueDown = event.getRepeatCount() == 0
|
||||
&& event.getAction() == KeyEvent.ACTION_DOWN;
|
||||
if (keyCode == KeyEvent.KEYCODE_HEADSETHOOK
|
||||
|| keyCode == KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE
|
||||
|| keyCode == KeyEvent.KEYCODE_SPACE) {
|
||||
if (uniqueDown) {
|
||||
doPauseResume();
|
||||
//show(sDefaultTimeout);
|
||||
if (binding != null) {
|
||||
binding.playBtn.requestFocus();
|
||||
}
|
||||
}
|
||||
return true;
|
||||
} else if (keyCode == KeyEvent.KEYCODE_MEDIA_PLAY) {
|
||||
if (uniqueDown && !playerControl.isPlaying()) {
|
||||
playerControl.start();
|
||||
updatePausePlay();
|
||||
}
|
||||
return true;
|
||||
} else if (keyCode == KeyEvent.KEYCODE_MEDIA_STOP
|
||||
|| keyCode == KeyEvent.KEYCODE_MEDIA_PAUSE) {
|
||||
if (uniqueDown && playerControl.isPlaying()) {
|
||||
playerControl.pause();
|
||||
updatePausePlay();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
when (keyCode) {
|
||||
KeyEvent.KEYCODE_HEADSETHOOK, KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE, KeyEvent.KEYCODE_SPACE -> {
|
||||
if (uniqueDown) {
|
||||
doPauseResume()
|
||||
// show(sDefaultTimeout);
|
||||
binding.playBtn.requestFocus()
|
||||
}
|
||||
return true
|
||||
}
|
||||
KeyEvent.KEYCODE_MEDIA_PLAY -> {
|
||||
if (uniqueDown && playerControl?.isPlaying == false) {
|
||||
playerControl?.start()
|
||||
updatePausePlay()
|
||||
}
|
||||
return true
|
||||
}
|
||||
KeyEvent.KEYCODE_MEDIA_STOP,
|
||||
KeyEvent.KEYCODE_MEDIA_PAUSE
|
||||
-> {
|
||||
if (uniqueDown && playerControl?.isPlaying == true) {
|
||||
playerControl?.pause()
|
||||
updatePausePlay()
|
||||
}
|
||||
return true
|
||||
}
|
||||
else -> return super.dispatchKeyEvent(event)
|
||||
return super.dispatchKeyEvent(event);
|
||||
}
|
||||
|
||||
public void updatePausePlay() {
|
||||
if (binding == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (playerControl.isPlaying()) {
|
||||
binding.playBtn.setImageResource(android.R.drawable.ic_media_pause);
|
||||
} else {
|
||||
binding.playBtn.setImageResource(android.R.drawable.ic_media_play);
|
||||
}
|
||||
|
||||
final boolean canSeekFfd = playerControl.canSeekForward();
|
||||
if (canSeekFfd) {
|
||||
binding.forwardBtn.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
binding.forwardBtn.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
|
||||
final boolean canSeekBwd = playerControl.canSeekBackward();
|
||||
if (canSeekBwd) {
|
||||
binding.rewindBtn.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
binding.rewindBtn.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
fun updatePausePlay() {
|
||||
binding.playBtn.icon = ContextCompat.getDrawable(
|
||||
context,
|
||||
if (playerControl?.isPlaying == true) {
|
||||
R.drawable.ic_pause
|
||||
} else { R.drawable.ic_play }
|
||||
)
|
||||
binding.forwardBtn.visibility = if (playerControl?.canSeekForward() == true) { VISIBLE } else { INVISIBLE }
|
||||
binding.rewindBtn.visibility = if (playerControl?.canSeekBackward() == true) { VISIBLE } else { INVISIBLE }
|
||||
}
|
||||
|
||||
private fun doPauseResume() {
|
||||
playerControl?.run {
|
||||
if (isPlaying) {
|
||||
pause()
|
||||
} else {
|
||||
start()
|
||||
}
|
||||
private void doPauseResume() {
|
||||
if (playerControl.isPlaying()) {
|
||||
playerControl.pause();
|
||||
} else {
|
||||
playerControl.start();
|
||||
}
|
||||
updatePausePlay()
|
||||
updatePausePlay();
|
||||
}
|
||||
|
||||
override fun setEnabled(enabled: Boolean) {
|
||||
binding.playBtn.setEnabled(enabled)
|
||||
binding.forwardBtn.setEnabled(enabled)
|
||||
binding.rewindBtn.setEnabled(enabled)
|
||||
binding.progressBar.setEnabled(enabled)
|
||||
@Override
|
||||
public void setEnabled(boolean enabled) {
|
||||
if(binding!=null){
|
||||
binding.playBtn.setEnabled(enabled);
|
||||
binding.forwardBtn.setEnabled(enabled);
|
||||
binding.rewindBtn.setEnabled(enabled);
|
||||
binding.progressBar.setEnabled(enabled);
|
||||
}
|
||||
|
||||
disableUnsupportedButtons()
|
||||
|
||||
super.setEnabled(enabled)
|
||||
disableUnsupportedButtons();
|
||||
super.setEnabled(enabled);
|
||||
}
|
||||
|
||||
@Suppress("MagicNumber")
|
||||
override fun onClick(v: View) {
|
||||
var pos: Int
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
int pos;
|
||||
boolean playing = playerControl.isPlaying();
|
||||
int id = v.getId();
|
||||
|
||||
playerControl?.let { playerControl ->
|
||||
val playing = playerControl.isPlaying
|
||||
val id = v.id
|
||||
|
||||
when (id) {
|
||||
R.id.playBtn -> {
|
||||
doPauseResume()
|
||||
}
|
||||
R.id.rewindBtn -> {
|
||||
pos = playerControl.currentPosition
|
||||
pos -= 5000
|
||||
playerControl.seekTo(pos)
|
||||
if (!playing) {
|
||||
playerControl.pause() // necessary in some 2.3.x devices
|
||||
}
|
||||
setProgress()
|
||||
}
|
||||
R.id.forwardBtn -> {
|
||||
pos = playerControl.currentPosition
|
||||
pos += 15000
|
||||
playerControl.seekTo(pos)
|
||||
|
||||
if (!playing) {
|
||||
playerControl.pause() // necessary in some 2.3.x devices
|
||||
}
|
||||
|
||||
setProgress()
|
||||
}
|
||||
|
||||
else -> {
|
||||
}
|
||||
if (id == R.id.playBtn) {
|
||||
doPauseResume();
|
||||
} else if (id == R.id.rewindBtn) {
|
||||
pos = playerControl.getCurrentPosition();
|
||||
pos -= 5000;
|
||||
playerControl.seekTo(pos);
|
||||
if (!playing) {
|
||||
playerControl.pause(); // necessary in some 2.3.x devices
|
||||
}
|
||||
setProgress();
|
||||
} else if (id == R.id.forwardBtn) {
|
||||
pos = playerControl.getCurrentPosition();
|
||||
pos += 15000;
|
||||
playerControl.seekTo(pos);
|
||||
if (!playing) {
|
||||
playerControl.pause(); // necessary in some 2.3.x devices
|
||||
}
|
||||
setProgress();
|
||||
}
|
||||
}
|
||||
|
||||
@Suppress("MagicNumber")
|
||||
override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
|
||||
@Override
|
||||
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
|
||||
if (!fromUser) {
|
||||
// We're not interested in programmatically generated changes to
|
||||
// the progress bar's position.
|
||||
return
|
||||
return;
|
||||
}
|
||||
|
||||
playerControl?.let { playerControl ->
|
||||
val duration = playerControl.duration.toLong()
|
||||
val newPosition = duration * progress / 1000L
|
||||
playerControl.seekTo(newPosition.toInt())
|
||||
binding.currentTimeText.text = formatTime(newPosition.toInt())
|
||||
}
|
||||
long duration = playerControl.getDuration();
|
||||
long newPosition = (duration * progress) / 1000L;
|
||||
playerControl.seekTo((int) newPosition);
|
||||
binding.currentTimeText.setText(formatTime((int) newPosition));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -314,33 +312,32 @@ class MediaControlView(context: Context, attrs: AttributeSet?) :
|
|||
*
|
||||
* Will be followed by several onProgressChanged notifications.
|
||||
*/
|
||||
override fun onStartTrackingTouch(seekBar: SeekBar) {
|
||||
isDragging = true // monitors the duration of dragging
|
||||
handler.removeMessages(SHOW_PROGRESS) // grants no more updates with media player progress while dragging
|
||||
@Override
|
||||
public void onStartTrackingTouch(SeekBar seekBar) {
|
||||
isDragging = true; // monitors the duration of dragging
|
||||
handler.removeMessages(SHOW_PROGRESS); // grants no more updates with media player progress while dragging
|
||||
}
|
||||
|
||||
/**
|
||||
* Called in devices with touchpad when the user finishes the adjusting of the seekbar.
|
||||
*/
|
||||
override fun onStopTrackingTouch(seekBar: SeekBar) {
|
||||
isDragging = false
|
||||
setProgress()
|
||||
updatePausePlay()
|
||||
handler.sendEmptyMessage(SHOW_PROGRESS) // grants future updates with media player progress
|
||||
@Override
|
||||
public void onStopTrackingTouch(SeekBar seekBar) {
|
||||
isDragging = false;
|
||||
setProgress();
|
||||
updatePausePlay();
|
||||
handler.sendEmptyMessage(SHOW_PROGRESS); // grants future updates with media player progress
|
||||
}
|
||||
|
||||
override fun onInitializeAccessibilityEvent(event: AccessibilityEvent) {
|
||||
super.onInitializeAccessibilityEvent(event)
|
||||
event.setClassName(MediaControlView::class.java.getName())
|
||||
@Override
|
||||
public void onInitializeAccessibilityEvent(AccessibilityEvent event) {
|
||||
super.onInitializeAccessibilityEvent(event);
|
||||
event.setClassName(MediaControlView.class.getName());
|
||||
}
|
||||
|
||||
override fun onInitializeAccessibilityNodeInfo(info: AccessibilityNodeInfo) {
|
||||
super.onInitializeAccessibilityNodeInfo(info)
|
||||
info.setClassName(MediaControlView::class.java.getName())
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val TAG = MediaControlView::class.java.getSimpleName()
|
||||
private const val SHOW_PROGRESS = 1
|
||||
@Override
|
||||
public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
|
||||
super.onInitializeAccessibilityNodeInfo(info);
|
||||
info.setClassName(MediaControlView.class.getName());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue