2017-09-23 39 views
0

这在背景Service.java代码含有onStart()方法 -如何运行的浮动泡沫作为后台服务,把所有的气泡代码OnStart方法内

@Override 
public void onStart(Intent intent, int startid) { 
    //Toast.makeText(this, "Service started by user.", Toast.LENGTH_LONG).show(); 

    private void addNewBubble() // Error here , says missing token ';' and Expression Expected 

    { 
     windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); 
     //here is all the science of params 
     final WindowManager.LayoutParams myParams = new WindowManager.LayoutParams(
       WindowManager.LayoutParams.WRAP_CONTENT, 
       WindowManager.LayoutParams.WRAP_CONTENT, 
       WindowManager.LayoutParams.TYPE_SYSTEM_ERROR, 
       WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED 
         | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON 
         | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, 
       PixelFormat.TRANSLUCENT 
     ); 
     BubbleLayout bubbleView = (BubbleLayout) LayoutInflater.from(BackgroundService.this).inflate(R.layout.bubble_layout, null); 
     bubbleView.setLayoutParams(myParams); 

     bubbleView.setOnBubbleRemoveListener(new BubbleLayout.OnBubbleRemoveListener() { 
      @Override 
      public void onBubbleRemoved(BubbleLayout bubble) { 
      } 
     }); 
     bubbleView.setOnBubbleClickListener(new BubbleLayout.OnBubbleClickListener() { 

      @Override 
      public void onBubbleClick(BubbleLayout bubble) { 


       Bitmap b = Screenshot.takescreenshotOfRootView(imageView); 
       imageView.setImageBitmap(b); 
       main.setBackgroundColor(Color.parseColor("#999999")); 

       //Toast.makeText(getApplicationContext(), "Clicked !", 
       // Toast.LENGTH_SHORT).show(); 
      } 
     }); 
     bubbleView.setShouldStickToWall(true); 
     bubblesManager.addBubble(bubbleView, 60, 20); 
    } 
} 

private void initializeBubblesManager() { 
    bubblesManager = new BubblesManager.Builder(this) 
      .setTrashLayout(R.layout.bubble_trash_layout) 
      .setInitializationCallback(new OnInitializedCallback() { 
       @Override 
       public void onInitialized() { 
        addNewBubble(); // Cannot resolve this method 
       } 
      }) 
      .build(); 
    bubblesManager.initialize(); 
} 

在MainActivity只包含权限代码使用checkDrawOverlay()方法,使用 startService(new Intent(this,BackgroundService.class))运行浮动气泡; 在其他部分....

+0

我正在尝试运行浮动气泡,以便在使用手机上的任何其他应用程序时可以拍摄屏幕截图。这就是我试图实施后台服务的原因。 https://github.com/yohanelly/Floating-Bubble-Live-Screenshots – Yohanelly

+0

我认为这意味着它不是一个有效的代码格式。仔细查看方法的起始和结束位置。 – n247s

+0

我将整个浮动气泡代码放入onStart()方法中,只有addNewBubble方法会给出错误。另外,要创建一个后台服务,我不需要创建一个全新的空白活动吗? – Yohanelly

回答

0

您有一个无效的代码格式这就是为什么你的IDE抱怨缺少分号(;)。与句子;

“采取在其中该方法开始和结束仔细看”

我的意思是你需要注意的地方,你声明的方法,因为它们可能只在范围声明类声明。目前您正在另一个方法的范围内声明一个方法(无效)。例如

public void methodOne() 
{ 
    // this nested method declaration is considerd invalid 
    private void methodTwo() 
    { 
     // method content 
    } 
} 

修复它简单地做

public void methodOne() 
{ 
    // call other method if you need it to be executed here 
    methodTwo(); 
} 

private void methodTwo() 
{ 
    // method content 
} 

这会照顾missing semicolon errorcannot resolve method error两者。

+0

谢谢你。错误已经消失,现在没有错误。虽然当我运行该应用程序,并点击添加气泡按钮。浮动泡沫根本不会被创建。我检查了Android监视器,显示没有错误。这是为什么?我是否需要为BackgroundService.java创建单独的空白活动? – Yohanelly

+0

嘿所以我想通了。尽管我有一个问题,要截取用户的当前活动,您是否必须只使用MediaProjection?或者有另一种使用DrawingCache的方法。我已经创建了一个浮动泡泡,我希望能够截取用户正在进行的当前活动。有什么建议么? – Yohanelly