小编R4j*_*R4j的帖子

在Android中通过HTTPS上的SOAP + XML请求Exchange Web Services 2007/2010

我使用Microsoft提供的以下C#代码来请求EWS 2010 MSDN链接并且它有效.我需要同样的android解决方案.

我尝试使用以下代码,但它没有帮助

    DefaultHttpClient client = new HttpsClient(
                MyActivity.this);

        requestBytes = myXMLStringRequest.getBytes("UTF-8");

        HttpPost httpPost = new HttpPost(url);
        httpPost.setHeader("Content-Type", "text/xml;utf-8");
        if (requestBytes != null) {
            httpPost.setHeader("Content-length",
                    String.valueOf(requestBytes.length));
            Log.d(TAG, "content length: " + requestBytes.length);
        }

        client.getCredentialsProvider().setCredentials(
                new AuthScope(url, 443),
                new UsernamePasswordCredentials(userName,
                        password));
        Log.d(TAG, "Begin request");
        HttpResponse response = client.execute(httpPost);
        Log.d(TAG, "status Line: " + response.getStatusLine().toString());
Run Code Online (Sandbox Code Playgroud)

这是我的xml请求

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns="http://schemas.microsoft.com/exchange/services/2006/messages" 
xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"> 
<soap:Body>
<GetFolder xmlns="http://schemas.microsoft.com/exchange/services/2006/messages"                xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">   
<FolderShape>     
    <t:BaseShape>Default</t:BaseShape>  
</FolderShape>    
<FolderIds>      
    <t:DistinguishedFolderId Id="inbox"/>     
    <t:DistinguishedFolderId Id="deleteditems"/>  
</FolderIds> 
</GetFolder>
Run Code Online (Sandbox Code Playgroud)

我还使用自定义HttpsClient和密钥库. …

android exchangewebservices

6
推荐指数
1
解决办法
1339
查看次数

在android中添加存在类的方法

我正在寻找一种方法将一些方法添加到存在的类中,如下所示:

String s = "";
s.doSomething();
Run Code Online (Sandbox Code Playgroud)

在目标C中,我可以使用类别来执行此操作.

@interface NSString( Stuff)
-(void)doSomething();
@end
Run Code Online (Sandbox Code Playgroud)

android有这样的东西吗?还是另一个黑客?


更新:实际上,我遇到了这个问题:我从jar文件中使用了一个类(不是final)(所以,我无法触及它的源代码).然后我想在不使用继承的情况下将方法(或类似的东西)添加到这个类中.例如:

 public class Provider{
       // many methods and fields go here...
       public String getName(){}
 }
Run Code Online (Sandbox Code Playgroud)

我想做的就是:

 provider.print(); //that call getName() method;
Run Code Online (Sandbox Code Playgroud)

我也试过代理模式,它有效,但我不喜欢这种方式(因为它像一个包装类,我必须存储一个具有许多字段和方法的对象,使用一个方法):

 public class ProxyProvider{
       Provider provider;
       public ProxyProvider(Provider provider){
           this.provider = provider;
       }
       public void print(){
           String name = provider.getName();
           //do something
       }
 }
Run Code Online (Sandbox Code Playgroud)

有什么方法可以解决这个问题吗?

java android design-patterns

6
推荐指数
1
解决办法
1410
查看次数

通过java中的反射设置对象字段的值

首先,我有一个这样的对象:

public class Entity {
    public int data1;
    public String data2;
    public float data3;
    public SubEntity data4;
}

public class SubEntity{
    public int id;
    public SubEntity(int id){
      tis.id = id;
    }
}
Run Code Online (Sandbox Code Playgroud)

还有一个HashMap:

  HashMap<String, Object> map = new HashMap<String, Object>();
  map.put("data1", 1);
  map.put("data2", "name");
  map.put("data3", 1.7);
  map.put("data4", new SubEntity(11));
Run Code Online (Sandbox Code Playgroud)

我需要通过使用hashmap中的反射来为实体动态的所有字段设置值的正确方法.像这样的东西:

    for (Field f : entity.getClass().getDeclaredFields()) {
       String name = f.getName();
       Object obj = map.get("name");
       // Need set value field base on its name and type. 

} 
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?假设我在实体中有很多子类.

java reflection

6
推荐指数
1
解决办法
1万
查看次数

如何在visual studio 2012中将文本添加到决策节点UML中

我尝试在Visual Studio中使用活动图.当我向图表添加决策节点时,无法添加文本以显示true或false条件.我在连接器属性中搜索但它没有帮助.
看看这个,我想在决策节点中添加true和发送false文本:
在此输入图像描述

另一种方法是使用注释节点,但问题是注释不与连接器链接.
我怎样才能做到这一点?任何帮助将不胜感激.

uml visual-studio activity-diagram

6
推荐指数
1
解决办法
5800
查看次数

具有溢出菜单的自定义操作栏布局

我使用actionbarsherklock自定义操作栏的库看起来像这样:

在此输入图像描述

我的自定义工具:

  ActionBar actionBar = getSupportActionBar();
    actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);

    // Do any other config to the action bar
    getSupportActionBar().setDisplayShowTitleEnabled(false);
    getSupportActionBar().setDisplayShowHomeEnabled(false);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    // set custom view
    View actionBarView = getLayoutInflater().inflate(
            R.layout.action_bar_default, null);

    View btnMenuLeft= actionBarView.findViewById(R.id.btnMenuLeft);
    btnMenuLeft.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            toggle();
        }
    });

    View btnMenuShare= actionBarView.findViewById(R.id.btnMenuShare);
    ActionBar.LayoutParams params = new ActionBar.LayoutParams(
            LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
    actionBar.setCustomView(actionBarView, params);

    // Hide the home icon
    actionBar.setIcon(android.R.color.transparent);
    actionBar.setLogo(android.R.color.transparent);
Run Code Online (Sandbox Code Playgroud)

这是自定义布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/nav_bar_bg"
android:gravity="center"
android:orientation="horizontal" >

<!-- menu button -->
    <ImageButton
        android:id="@+id/btnMenuLeft" …
Run Code Online (Sandbox Code Playgroud)

android actionbarsherlock android-actionbar

6
推荐指数
1
解决办法
1万
查看次数

iText- ColumnText在Rectangle中设置文本适合大小

我想将文本添加到矩形(x,y,w,h)中.文本应该适合矩形的大小(意味着它具有最大尺寸,但它仍然包含在矩形中).
我试着测量文本大小基础BaseFont.getWidthPoint()问题是最终文本大小不能适合rect.它看起来像这样:
在此输入图像描述

这是我的尝试:

  PdfContentByte cb = writer.getDirectContent();
    cb.saveState();
    ColumnText ct = new ColumnText(writer.getDirectContent());
    Font font = new Font(BaseFont.createFont());
    int rectWidth = 80;
    float maxFontSize = getMaxFontSize(BaseFont.createFont(), "text", rectWidth );
    font.setSize(maxFontSize);
    ct.setText(new Phrase("test", font));
    ct.setSimpleColumn(10, 10, rectWidth , 70);
    ct.go();        

    // draw the rect
    cb.setColorStroke(BaseColor.BLUE);
    cb.rectangle(10, 10, rectWidth , 70);
    cb.stroke();
    cb.restoreState();

   // get max font size base on rect width
  private static float getMaxFontSize(BaseFont bf, String text, int width){
    float measureWidth = 1;
    float fontSize = 0.1f;
    float …
Run Code Online (Sandbox Code Playgroud)

java itext

6
推荐指数
1
解决办法
1万
查看次数

tesseract v3.03使用可搜索的文本示例呈现PDF

tesseract v3.03的发行说明中,tesseract现在支持使用可搜索文本的渲染PDF输出,但我不知道如何在我的代码中使用此功能.
目前我使用tess-two为我的Android应用程序,然后我只是想知道这个功能可以用于Android吗?

如果你能给我一个使用tesseractapi来渲染pdf 的例子,那将会很棒,然后我将尝试为tess-two库删除缺少的函数.
提前致谢.

P/s:我可以看到可以处理render pdf输出的pdfrenderer文件,但我不知道如何将它应用于base api.

更新:这是我的尝试:

 tesseract::TessResultRenderer* renderer = new tesseract::TessPDFRenderer(nat->api.GetDatapath());
__android_log_print(ANDROID_LOG_ERROR, "Test_tesseract", "data path = %s", nat->api.GetDatapath());
if (!nat->api.ProcessPages(c_file_name, NULL, 0, renderer)) {
    __android_log_print(ANDROID_LOG_ERROR, "Test_tesseract", "process page failed");
    delete renderer;
    return;
}

FILE* fout = fopen(c_pdf_file_name, "wb");
if (fout == NULL) {
    __android_log_print(ANDROID_LOG_ERROR, "Test_tesseract", "Cannot create output file %s\n", c_pdf_file_name);
    delete renderer;
    return;
}

const char* data;
int dataLength;

bool boolValue = …
Run Code Online (Sandbox Code Playgroud)

ocr android tesseract

6
推荐指数
1
解决办法
1692
查看次数

Swift语言中包含自定义对象的泛型类型

我想知道有没有办法==在下面的泛型函数中将两个泛型类型实例与运算符进行比较:

 func compare<T>(T a, T b) -> Bool {
    if a == b{
       // do something
       return true; 
    }else{
       // do another thing
       return false;
    }   
 }
Run Code Online (Sandbox Code Playgroud)

这是我的自定义对象:

class MyObj{
  var id = 3
  var name: String?
}
Run Code Online (Sandbox Code Playgroud)

generics swift

6
推荐指数
1
解决办法
5699
查看次数

Armadillo移植imagesc以从矩阵中保存图像位图

我有这个matlab代码来做超级频谱图后显示图像对象(stft,couple plca ...)

 t = z2 *stft_options.hop/stft_options.sr;
 f = stft_options.sr*[0:size(spec_t,1)-1]/stft_options.N/1000;

 max_val = max(max(db(abs(spec_t))));
 imagesc(t, f, db(abs(spec_t)),[max_val-60 max_val]); 
Run Code Online (Sandbox Code Playgroud)

得到这个结果:

在此输入图像描述

我使用Armadillo lib 成功移植到C++ 并获得mat结果:

mat f,t,spec_t;
Run Code Online (Sandbox Code Playgroud)

问题是我不知道如何在matlab中转换像imagesc这样的位图.

我搜索并找到了这个答案,但似乎它在我的情况下不起作用,因为:

  • 我使用双矩阵代替整数矩阵,它不能标记为位图颜色
  • imagesc方法采用4个参数,其具有向量x和y的界限
  • imagesc方法还支持规模(我实际上不知道它是如何工作的)


有没有人有任何建议?

更新:这是save犰狳方法的结果.它看起来不像上面的频谱图.我错过了什么吗?

spec_t.save("spec_t.png", pgm_binary); 
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

更新2:使用db和保存频谱图abs

  mat spec_t_mag = db(abs(spec_t)); // where db method: m = 10 * log10(m);
  mag_spec_t.save("mag_spec_t.png", pgm_binary);
Run Code Online (Sandbox Code Playgroud)

结果如下:

在此输入图像描述

c++ matlab image image-processing armadillo

6
推荐指数
1
解决办法
1058
查看次数

结束活动中的自定义共享元素转换

我有全局应用程序中的Feed数据列表.我用这个代码,以从我的转变RecyclerViewMainAcitivty

// selected item event
Intent intent = new Intent(this, DetailActivity.class);
intent.putExtra("item_feed_index", selectedItemIndex);
FeedViewHolder viewHolder = getViewHolderFromPosition(position);
Pair<View, String> pair1 = Pair.create(viewHolder.imageView, "TransitionName.Feed.Image");
Pair<View, String> pair2 = Pair.create(viewHolder.textView, "TransitionName.Feed.Text");
Pair<View, String> pair3 = Pair.create(viewHolder.button, "TransitionName.Feed.Button");
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(this, pair1, pair2, pair3);
startActivity(intent, options.toBundle());
Run Code Online (Sandbox Code Playgroud)

它确实有效.但问题在于DetailActivity,我有另一个垂直列表,用户可以向下/向上滚动以更改列表中的Feed项(这也会更改滚动索引).

按回来时DetailActivity,我希望退出动画转换执行正确的查看源索引.我怎样才能做到这一点?

这是代码onActivityResultMainActivity,它滚动循环到正确的位置,但出口过渡动画是不正确的位置.

int currentFeedIndex = Application.getInstance().getCurrentViewingFeed();
if (currentFeedIndex > 0 && currentFeedIndex < adapter.getItemCount()) {
   if (gridLayoutManager != null) {
      gridLayoutManager.scrollToPositionWithOffset(currentFeedIndex + 1, 0); …
Run Code Online (Sandbox Code Playgroud)

android android-transitions android-recyclerview

6
推荐指数
1
解决办法
999
查看次数