我设法让屏幕上显示地图.现在,用户将在地图上移动并按下它.按下一个点后,我需要在按下位置的屏幕上添加一个推针.如果用户决定去另一点,所选择的点压接时,第一个图钉将disapear和新的人会在新的位置绘制
我喜欢这样:
public class LocationSelectionActivity extends MapActivity
{
GeoPoint p;
List<Overlay> listOfOverlays;
MapOverlay mapOverlay;
private MapView mapView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.locationselection);
mapView = (MapView) findViewById(R.id.mapView);
mapView.setSatellite(false);
final MapController mc = mapView.getController();
String coordinates[] = {"46.540606", "22.454542"};
double lat = Double.parseDouble(coordinates[0]);
double lng = Double.parseDouble(coordinates[1]);
p = new GeoPoint(
(int) (lat * 1E6),
(int) (lng * 1E6));
mc.animateTo(p);
mc.setZoom(10);
ZoomControls zoomControls = (ZoomControls) findViewById(R.id.zoomcontrols);
zoomControls.setOnZoomInClickListener(new View.OnClickListener() {
public …
Run Code Online (Sandbox Code Playgroud) 干净利落.我开始一项活动并检查手机是否启用了GPS模块.如果未启用,我会通过对话框提示用户,并询问他是否要手动启用它.在是,我激活位置设置.现在用户可以根据需要启用它,但我需要检查他做了什么.
try {
isGPSEnabled = locationManager
.isProviderEnabled(LocationManager.GPS_PROVIDER);
} catch (Exception ex) {}
if (isGPSEnabled) {
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, 0, 0, locationListenerGps);
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(
"Your GPS module is disabled. Would you like to enable it ?")
.setCancelable(false)
.setPositiveButton("Yes",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int id) {
// Sent user to GPS settings screen
final ComponentName toLaunch = new ComponentName(
"com.android.settings",
"com.android.settings.SecuritySettings");
final Intent intent = new Intent(
Settings.ACTION_LOCATION_SOURCE_SETTINGS);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setComponent(toLaunch);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivityForResult(intent, 1); …
Run Code Online (Sandbox Code Playgroud) 每当我加载片段的主要活动并且用户启动新活动,切换设备的方向并返回主活动时,我就会收到此错误.
@Override
public void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.home_layout);
super.onCreate(savedInstanceState);
fragmentManager = getSupportFragmentManager();
fragment = fragmentManager.findFragmentById(R.id.layFragment);
initialize();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
setContentView(R.layout.home_layout);
initialize();
super.onConfigurationChanged(newConfig);
}
private void initialize() {
layStatus = (LinearLayout) findViewById(R.id.layStatus);
txtStatus = (TextView) findViewById(R.id.txtStatus);
....
handleFragments(lastFragmentId);
}
public void handleFragments(int fragmentId) {
if (fragment == null) {
FragmentTransaction ft = fragmentManager.beginTransaction();
if (fragmentId==someFragmentId){
ft.replace(R.id.layFragment, new FragmentSomeFragment());
}
else
....
ft.commit();
}
}
Run Code Online (Sandbox Code Playgroud)
在我的android清单中,活动被声明为:
<activity
android:name=".HomeActivity"
android:configChanges="keyboardHidden|orientation" />
<activity
Run Code Online (Sandbox Code Playgroud)
在另一个关于SO的问题中,我发现这可能是由支持库中的一个错误造成的,我添加没有任何运气:
// needed as a workaround for …
Run Code Online (Sandbox Code Playgroud) 我目前有2个Android应用程序,我想使用Firebase添加通知,也许还有广告和分析,因为它是免费且易于实现的.
我看到我有两个选择:
哪一个是正确的方法,为什么?谢谢.
我的xubuntu机器上有一个奇怪的行为,我不知道为什么.
将打开设置屏幕,例如使用"位置"设置,该设置具有"经度"的输入字段.我关上了屏幕
所以,基本上只有在完成这些步骤后,我才可以使用我的键盘在模拟器中输入.如果我回到Android Studio并输入内容,当我返回模拟器时,它不起作用.如何使输入始终有效?
ubuntu android-virtual-device android-emulator android-studio
我有一个应用程序,我需要实现日/夜主题.不幸的是,通过使用样式没有简单的方法来制作主题,我需要能够更新:布局背景,按钮选择器,文本颜色,文本大小,图像,图标,动画.
从我看到我有2个选项:
有不同的xml布局文件为night/day,所以像home_day.xml
/ home_night.xml
.应用程序中有大约30个屏幕,因此最终将有60 xml布局.关于活动/片段onCreate,基于当前小时我可以setContentView
.这会添加更多xml文件,但可以避免在活动中添加更多代码
只有一个日/夜布局和活动的onCreate
findviewById我想要主题的每个项目,并根据当前日/夜更新他的属性.这可能会为许多视图生成大量额外代码,查找视图和应用属性.
我的目标是2.但我愿意接受你的任何建议.那么,你会选择什么?为什么?
我们来看一个基本的例子
用于存储用户的表
@Entity (tableName="users")
class UsersEntity(
@PrimaryKey val id
var name:String,
...
)
Run Code Online (Sandbox Code Playgroud)
用于存储角色的表
@Entity (tableName="roles")
class RolesEntity(
@PrimaryKey val id
var name:String,
...
)
Run Code Online (Sandbox Code Playgroud)
用于存储用户和角色之间的多对多关系的表
@Entity (tableName="roles")
class UserRoles(
@PrimaryKey val id
var userId:String,
var roleId:String
)
Run Code Online (Sandbox Code Playgroud)
我在视图中需要的pojo类
class user(
var id:String,
var name:String,
.... other fields
var roles: List<Role>
)
Run Code Online (Sandbox Code Playgroud)
在我,我ViewModel
怎么能把user
结果传递给LiveData
已经List<Role>
填满?
从一般方面来看,我可以:
UserDao.getUserById(id)
返回LiveData
从用户表,并RoleDao.getRolesForUserId(id)
返回LiveData
与用户的角色列表.然后在我的片段,我所能做的viewModel.getUserById().observe{}
和viewModel.getRolesForUserId().observe{}
.但这基本上意味着拥有2名观察员,而且我非常有信心这不是可行的方法.MediatorLiveData
android-room android-livedata android-viewmodel android-architecture-components android-jetpack
我知道这已经在这里一遍又一遍地讨论,但我尝试过的所有例子都没有为我工作.
我得到了什么
我从Android访问呼叫日志,我得到了所有呼叫的列表.当然,在这里我得到了很多重复.首先我制作一份清单
List<ContactObject> lstContacts = new ArrayList<ContactObject>();
Run Code Online (Sandbox Code Playgroud)
然后我在其中添加对象
While (get some record in call log)
{
ContactObject contact = new ContactObject();
contact.SetAllProperties(......)
lstContacts.add(contact);
}
Set<ContactObject> unique = new LinkedHashSet<ContactObject>(lstContacts);
lstContacts = new ArrayList<ContactObject>(unique);
Run Code Online (Sandbox Code Playgroud)
Contact Object类很简单
public class ContactObject {
public ContactObject() {
super();
}
@Override
public boolean equals(Object obj) {
if (!(obj instanceof ContactObject))
return false;
return this.lstPhones == ((ContactObject) obj).getLstPhones();
}
@Override
public int hashCode() {
return lstPhones.hashCode();
}
private long Id;
private String name;
private List<String> lstPhones; …
Run Code Online (Sandbox Code Playgroud) 我可以通过来电或短信来获取电话号码.不幸的是,在SMS的情况下,可能有国家代码.所以,基本上我需要获取没有国家代码的普通电话号码,以便将其与联系人中的现有号码进行比较.
我正在考虑在我的应用程序中为有价值的用户提供免费解锁代码,这意味着他们不必购买应用程序即可完全访问它.
调查它有几种方法:
您同意仅向位于您的产品,产品中的应用内商品或相关内容的国家/地区的用户分发促销代码.
如果我想奖励我不销售应用程序的国家/地区的用户,该怎么办?
我可以为用户的电子邮件生成解锁代码......但这会增加一些隐私问题
我可以让用户告诉我应用程序中的一些代码,然后为该代码生成解锁代码......我想的可能是ANDROID_ID.不确定哪些安全问题可能会带来ANDROID_ID的读取,例如广告客户ID.另一种方法是在应用程序安装上生成唯一代码并使用它.
使用类似Firebase数据库的内容,然后在那里存储一堆代码,并检查在应用程序中输入的代码是否在服务器中可用.
我正在等待你对如何实现这个Android的想法.
android ×7
android-architecture-components ×1
android-room ×1
arraylist ×1
firebase ×1
fragment ×1
gps ×1
hashcode ×1
java ×1
location ×1
phone-number ×1
pushpin ×1
treeset ×1
ubuntu ×1