@ -13,6 +13,8 @@ import android.os.IBinder;
import android.view.IRotationWatcher ;
import android.view.IRotationWatcher ;
import android.view.InputEvent ;
import android.view.InputEvent ;
import java.util.concurrent.atomic.AtomicBoolean ;
public final class Device {
public final class Device {
public static final int POWER_MODE_OFF = SurfaceControl . POWER_MODE_OFF ;
public static final int POWER_MODE_OFF = SurfaceControl . POWER_MODE_OFF ;
@ -31,6 +33,7 @@ public final class Device {
private ScreenInfo screenInfo ;
private ScreenInfo screenInfo ;
private RotationListener rotationListener ;
private RotationListener rotationListener ;
private ClipboardListener clipboardListener ;
private ClipboardListener clipboardListener ;
private final AtomicBoolean isSettingClipboard = new AtomicBoolean ( ) ;
/ * *
/ * *
* Logical display identifier
* Logical display identifier
@ -76,6 +79,10 @@ public final class Device {
serviceManager . getClipboardManager ( ) . addPrimaryClipChangedListener ( new IOnPrimaryClipChangedListener . Stub ( ) {
serviceManager . getClipboardManager ( ) . addPrimaryClipChangedListener ( new IOnPrimaryClipChangedListener . Stub ( ) {
@Override
@Override
public void dispatchPrimaryClipChanged ( ) {
public void dispatchPrimaryClipChanged ( ) {
if ( isSettingClipboard . get ( ) ) {
// This is a notification for the change we are currently applying, ignore it
return ;
}
synchronized ( Device . this ) {
synchronized ( Device . this ) {
if ( clipboardListener ! = null ) {
if ( clipboardListener ! = null ) {
String text = getClipboardText ( ) ;
String text = getClipboardText ( ) ;
@ -181,7 +188,10 @@ public final class Device {
}
}
public boolean setClipboardText ( String text ) {
public boolean setClipboardText ( String text ) {
return serviceManager . getClipboardManager ( ) . setText ( text ) ;
isSettingClipboard . set ( true ) ;
boolean ok = serviceManager . getClipboardManager ( ) . setText ( text ) ;
isSettingClipboard . set ( false ) ;
return ok ;
}
}
/ * *
/ * *