2014-09-16 4 views
0

Когда я пытаюсь сделать снимок экрана своей активности, которая использует Androidplot, я получаю сообщение «Could'nt capture capture screenshot - storage может использоваться». Я могу сделать снимок экрана отлично, если график Androidplot не помещен в действие.Androidplot не смог захватить снимок экрана

private void renderAndroidPlot() 
{ 
    // on ICS+ devices :-) 
    getActivity().getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, 
      WindowManager.LayoutParams.FLAG_SECURE); 

    // initialize our XYPlot reference: 
    plot = (XYPlot) getView().findViewById(R.id.mySimpleXYPlot); 

    // Create a couple arrays of y-values to plot: 
    Number[] series1Numbers = getGraphData(); 

    // Turn the above arrays into XYSeries': 
    XYSeries series1 = new SimpleXYSeries(
      Arrays.asList(series1Numbers),   // SimpleXYSeries takes a List so turn our array into a List 
      SimpleXYSeries.ArrayFormat.XY_VALS_INTERLEAVED, // Y_VALS_ONLY means use the element index as the x value 
      "Series1");        // Set the display title of the series 


    // add a new series' to the xyplot: 
    plot.getGraphWidget().getGridBackgroundPaint().setColor(Color.WHITE); 
    plot.getGraphWidget().getBackgroundPaint().setColor(Color.WHITE); 
    plot.setBorderStyle(Plot.BorderStyle.NONE, null, null); 

    Paint lineFill = new Paint(); 
    lineFill.setAlpha(200); 
    lineFill.setShader(new LinearGradient(0, 0, 0, 250, Color.WHITE, Color.parseColor("#99E6B1"), Shader.TileMode.MIRROR)); 
    LineAndPointFormatter formatter = new LineAndPointFormatter(Color.rgb(0, 0,0), null, null,null); 
    formatter.setFillPaint(lineFill); 

    plot.setPlotMargins(0, 0, 0, 0); 
    plot.setPlotPadding(0, 0, 0, 0); 

    plot.getGraphWidget().setMarginTop(30); 
    plot.getGraphWidget().setMarginRight(50); 
    plot.getGraphWidget().setMarginLeft(50); 
    plot.getGraphWidget().setMarginBottom(50); 



    plot.getGraphWidget().getDomainLabelPaint().setColor(Color.BLACK); 
    plot.getGraphWidget().getRangeLabelPaint().setColor(Color.BLACK); 

    plot.getGraphWidget().getDomainOriginLabelPaint().setColor(Color.BLACK); 
    plot.getGraphWidget().getDomainOriginLinePaint().setColor(Color.BLACK); 
    plot.getGraphWidget().getRangeOriginLinePaint().setColor(Color.BLACK); 


    // reduce the number of range labels 
    plot.setTicksPerRangeLabel(3); 
    plot.getGraphWidget().setDomainLabelOrientation(0); 

    //Remove legend 
    plot.getLayoutManager().remove(plot.getLegendWidget()); 
    //plot.getLayoutManager().remove(plot.getDomainLabelWidget()); 
    plot.getLayoutManager().remove(plot.getRangeLabelWidget()); 
    plot.getLayoutManager().remove(plot.getTitleWidget()); 

    plot.setDomainStep(XYStepMode.SUBDIVIDE, 6); 

    plot.addSeries(series1, formatter); //new LineAndPointFormatter(Color.parseColor("#2E64FE"), null, null, null)); 



} 
+0

Может ли у вас некоторая привязка к фрагменту кода? – keshav

+0

только что обновили мой основной запрос кодом - спасибо. – user3792936

ответ

1

Это из-за досадной ошибки в коде образца, который включал эту строку:

getActivity().getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, 
    WindowManager.LayoutParams.FLAG_SECURE); 

Удалить, что из вашего кода и снимки экрана должны работать.

0
// on ICS+ devices :-) 
getActivity().getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, 
     WindowManager.LayoutParams.FLAG_SECURE); 

Этот забавный маленький блок сделан таким образом, что пользователь не может делать скриншоты. Удалите его, и вы сможете делать скриншоты.

+1

Знаете ли вы, что этот вопрос был задан в 2014 году? Также ваш ответ такой же, как и другой, уже опубликованный. Пожалуйста, публикуйте более поздние ответы только в том случае, если они существенно отличаются или улучшают другие, уже отправленные. –

Смежные вопросы