voj*_*jta 12 c# java android visual-studio xamarin
我有一个.jar带有Java接口的文件MyService,它有一个方法:
boolean printBitmapObject(android.graphics.Bitmap bitmap, byte[] result);
Run Code Online (Sandbox Code Playgroud)
我想.jar在Visual Studio 2015中的Android Xamarin项目中使用C#中的这个文件.我做了以下步骤:
.jar文件放入属性设置为Jars的新项目的目录中.BuildActionInputJar不幸的是,我无法构建我的主项目,因为自动生成的C#代码中存在错误:
public interface IMyService : global::Android.OS.IInterface
{
bool PrintBitmapObject (Bitmap bmp, byte[] result); //"Bitmap" is red underlined
}
Run Code Online (Sandbox Code Playgroud)
与消息"The type or namespace name 'Bitmap' could not be found (are you missing a using directive or an assembly reference?)".
还有一个自动生成的抽象类IMyServiceStub,它也无法识别Bitmap.而且,它不知道一些自动生成BitmapStub:
public abstract class IMyServiceStub : global::Android.OS.Binder, global::Android.OS.IInterface, IMyService
{
...
protected override bool OnTransact (int code, global::Android.OS.Parcel data, global::Android.OS.Parcel reply, int flags)
{
...
case TransactionPrintBitmapObject: {
data.EnforceInterface (descriptor);
Bitmap arg0 = default (Bitmap); //Bitmap red underlined
arg0 = BitmapStub.AsInterface (data.ReadStrongBinder ()); //BitmapStub red underlined
byte [] arg1 = default (byte []);
var result = this.PrintBitmapObject (arg0, arg1);
reply.WriteNoException ();
reply.WriteInt (result ? 1 : 0);
data.WriteByteArray (arg1);
return true;
}
...
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试添加using Bitmap = Android.Graphics.Bitmap到自动生成的文件,但它没有帮助,因为BitmapStub仍然未知,我的更改将在下一次构建期间被覆盖.
我有什么办法可以解决这个问题吗?或者它是Xamarin中的已知错误(我使用的是4.0版)?
我已经有一段时间没有玩 Xamarin 了,但是 Android.Graphics.Bitmap 命名空间属于 Java 语言,而不是 C#。因此生成的 C# 代码不会知道有关该命名空间的任何信息。
因此,我会尝试添加using System.Drawing;而不是using Bitmap = Android.Graphics.Bitmap
如果编译器无法识别System.Drawing命名空间,您可能还必须手动添加该 DLL 作为对 C# 项目的引用。
让我知道效果如何。