我正在做的是将图像从相机绘制到a canvas,然后将view包含图像的图像转换为a bitmap并将其绘制在画布顶部.然后最终bitmap保存到外部存储器.
问题是canvas似乎是将自身调整为预览窗口大小,而不是保存的图像大小.
以下是我的活动类中的部分,它将捕获的视图合并到摄像机图像的顶部:
Bitmap myImage = BitmapFactory.decodeByteArray(imageData, 0,
imageData.length, options);
Bitmap mutableBitmap = myImage.copy(Bitmap.Config.ARGB_8888, true);
Paint paint = new Paint();
Canvas canvas = new Canvas(mutableBitmap);
view.setDrawingCacheEnabled(true);
viewCapture = Bitmap.createBitmap(view.getDrawingCache());
view.setDrawingCacheEnabled(false);
canvas.drawBitmap(viewCapture, 0, 0, paint);
fileOutputStream = new FileOutputStream(dir + "/" + imgName + ".jpg");
BufferedOutputStream bos = new BufferedOutputStream(fileOutputStream);
mutableBitmap.compress(CompressFormat.JPEG, quality, bos);
Run Code Online (Sandbox Code Playgroud)
这会将位图保存在捕获的图像之上,但由于尺寸不同,它会偏移到左上角.
我通过在surfaceChanged中执行以下操作来设置不同的大小
Camera.Parameters p = mCamera.getParameters();
Camera.Size myBestPreviewSize = getBestPreviewSize(w, h, p);
p.setPreviewSize(myBestPreviewSize.width, myBestPreviewSize.height);
Camera.Size myBestPictureSize = getBestPictureSize(w, …Run Code Online (Sandbox Code Playgroud) 假设我上传了两张或两张以上的照片Framelayout.因此,我在这三张照片的三个不同位置上传了三个与同一个人的照片.然后,可以使用Android或Java或Native中的哪些图像处理库来执行某些操作,如图中所示.
我想互相拍多张照片.
这样的东西: -

一个想法是:
如何将多张图片与其他图片合并?通过检查di-similarity并相互合并?
是否有任何第三方Api或一些Photoshop服务可以帮助我进行这些图像处理?
我正在尝试为他选择的每个联系人编写一个为用户存储数据的应用程序.我想向每个用户添加一个custom provider(像facebook一样),按下它将打开我的应用程序并允许用户查看存储的数据.我按照本指南创建了一个自定义提供程序:http:
//www.c99.org/2010/01/23/writing-an-android-sync-provider-part-2/
但是custom provider没有出现在我的联系人列表中,我试图改变我MIME_TYPE的vnd.com.google.cursor.item/contact_user_defined_field
那个也没有帮助(当使用第三方应用时它显示我的提供者但没有我的图标)
我的联系定义是这样的:
<ContactsSource xmlns:android="http://schemas.android.com/apk/res/android">
<ContactsDataKind
android:icon="@drawable/ic_launcher"
android:mimeType="vnd.android.cursor.item/vnd.MyPackageName.profile"
android:summaryColumn="data2"
android:detailColumn="data3"
android:detailSocialSummary="true" />
</ContactsSource>
Run Code Online (Sandbox Code Playgroud)
我的相关代码是这样的:
String MIME_TYPE "vnd.android.cursor.item/vnd.MyPackageName.profile";
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
int rawContactInsertIndex =ops.size();//(int)Contact_RAW_ID;
ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI)
.withValue(RawContacts.ACCOUNT_TYPE, null)
.withValue(RawContacts.ACCOUNT_NAME,null )
.build());
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(Data.MIMETYPE,Phone.CONTENT_ITEM_TYPE)
.withValue(Phone.NUMBER, "9X-XXXXXXXXX")
.build());
ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI)
.withValueBackReference(Data.RAW_CONTACT_ID, 0)
.withValue(Data.MIMETYPE,StructuredName.CONTENT_ITEM_TYPE)
.withValue(StructuredName.DISPLAY_NAME, "John Doe")
.build());
ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI)
.withValueBackReference(Data.RAW_CONTACT_ID, 0)
.withValue(Data.MIMETYPE,Email.CONTENT_ITEM_TYPE)
.withValue(Email.ADDRESS, "John Doe")
.build());
ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI)
.withValueBackReference(Data.RAW_CONTACT_ID, 0)
.withValue(Data.MIMETYPE,Phone.CONTENT_ITEM_TYPE)
.withValue(Phone.NUMBER, "1234567890")
.build());
ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI)
.withValueBackReference(Data.RAW_CONTACT_ID, 0)
.withValue(Data.MIMETYPE,MIME_TYPE)
.withValue(Data.DATA1, "Custom …Run Code Online (Sandbox Code Playgroud) 我是Android开发的新手,我有以下问题.我需要在FrameLayout里面使用ScrollView它来使它可滚动.我写了这个
<ScrollView
android:id="@+id/scrollView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:background="#00ff00">
<FrameLayout
android:id="@+id/frameLayout"
android:layout_width="match_parent"
android:layout_height="500dp"
android:background="#ff0000">
</FrameLayout>
</ScrollView>
Run Code Online (Sandbox Code Playgroud)
但这不起作用.我尝试过RelativeLayout并且有效,但我需要使用FrameLayout.有任何想法吗?
我一直在创建Chips像Gmail和大多数社交Android应用程序的地址.
我一直在追加值,LinearLayout只要它小于设备宽度就可以正常工作.一旦它的长度超过设备宽度,它就会变得混乱.
如何在每个环境中保持相同的行为?
预期行为:

我得到了什么

代码片段:
<LinearLayout
android:id="@+id/chipsBoxLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
>
<!--Layout to add Chips like Gmail application-->
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,1);
params.setMargins(5, 0, 5, 0);
Iterator<Contact> iterContacts = contacts.iterator();
while(iterContacts.hasNext())
{
Contact contact = iterContacts.next();
TextView t = new TextView(MainActivity.this);
t.setLayoutParams(params);
t.setPadding(5, 5, 5, 5);
t.setText(contact.getContactName());
t.setTextColor(Color.WHITE);
t.setBackgroundColor(Color.BLUE);
chipsBoxLayout.addView(t);
}
Run Code Online (Sandbox Code Playgroud) 我只PagerSlidingTabStrips与我融为一体Icons.但我selector在图标上没有合作PagerSlidingTabStrips.
XML
<PagerSlidingTabStrip
android:id="@+id/pager_sliding_tab_strip"
android:layout_width="fill_parent"
android:layout_height="45dip"
android:background="@color/white"
app:pstsDividerColor="#FFFFA500"
app:pstsIndicatorColor="#FFFFA500"
app:pstsTabPaddingLeftRight="14dip"
app:pstsUnderlineColor="#FFFFA500" />
Run Code Online (Sandbox Code Playgroud)
添加implements IconTabProvider到我的ViewPager工作完美.
public class ViewPagerAdapter extends FragmentPagerAdapter implements IconTabProvider {
final int PAGE_COUNT = 3;
private final int[] ICONS = { R.drawable.tab_icon_zname_contacts_selector, R.drawable.tab_icon_zname_friends_selector,
R.drawable.tab_icon_zname_call_log_selector };
@Override
public int getPageIconResId(int position) {
return ICONS[position];
}
}
Run Code Online (Sandbox Code Playgroud)
iconSelector
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/tab_icon_zname_call_log_selected" android:state_selected="true"/>
<item android:drawable="@drawable/tab_icon_zname_call_log" android:state_selected="false"/>
</selector>
Run Code Online (Sandbox Code Playgroud)
如何使图标选择器工作PagerSlidingTabStrips?当选择该选项卡时,我想要带有橙色的图标,但无论如何它都会返回灰色.

我试图找到有关该主题的任何信息; 找不到任何东西.让我觉得奇怪,因为JDO听起来像智能手机应该非常善于做的事情.
你知道JDOAndroid设备,本机或外部应用程序/库是否可行?
我想要得到所有Call-Logs excluding SMS但我得到一个合并列表.
如何仅过滤呼叫的呼叫记录?
我正在使用以下代码.
String[] strFields = {
android.provider.CallLog.Calls.NUMBER,
android.provider.CallLog.Calls.TYPE,
android.provider.CallLog.Calls.CACHED_NAME,
android.provider.CallLog.Calls.CACHED_NUMBER_TYPE,
android.provider.CallLog.Calls.DATE
};
String strOrder = android.provider.CallLog.Calls.DATE + " DESC";
Uri calluri = Uri.parse("content://call_log/calls");
Cursor mCallCursor = getContentResolver().query(
calluri,
strFields,
null,
null,
strOrder
);
Run Code Online (Sandbox Code Playgroud)
我正在使用Samsung Note 2进行测试.
我想在应用程序上清理我的应用程序创建的垃圾UnInstalling.
使用ManiFest文件: -
在清单文件中添加:
<receiver android:name="com.netdoers.com.ui.CleanReceiver" >
<intent-filter>
<action android:name="android.intent.action.PACKAGE_REMOVED" >
</action>
<data android:scheme="package"/>
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
创建接收器以捕获 BroadCast Event
public class CleanReceiver extends BroadcastReceiver
{
public void onReceive(Context context, Intent intent) {
CustomToast.showToastMessage(context, "Uninstalling Application");
Log.e("Uninstall", "CleanReceiver Called");
}
}
Run Code Online (Sandbox Code Playgroud)
在Java代码: -
BroadCastReceiver br = new CleanReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
intentFilter.addDataScheme("package");
registerReceiver(br, intentFilter);
Run Code Online (Sandbox Code Playgroud)
但是在卸载应用程序时,接收器从未被调用过.
Java和Manifest都不会在卸载应用程序时调用Receiver.如何在卸载应用程序时捕获广播事件?