我正在尝试Sip client使用pjsip诸如CSipSimple项目构建一个for android .但是,我实际上并不太了解pjsip.有没有人有一个关于pjsip的教程或类似的东西来Sip softphone使用PJsip lib在android中构建?欢迎任何建议!
在android中,我有一段代码:
// RelativeLayout with id is "root": main.xml
<EditText
android:id="@+id/pref_edit_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:hint="Text to share in preference"
/>
// This is the button I want to add to main.xml
<Button
android:id="@+id/save_button"
android:layout_below="@id/pref_edit_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Save"
/>
Run Code Online (Sandbox Code Playgroud)
在我的活动,随着RelativeLayout.LayoutParam我可以添加button的位置left, right, top, bottom的root观点,但我不能添加below其他视图或等...!所以,任何人都可以给一个建议添加view内容涉及与其他view的RelativeLayout动态?
最近,我试图使用SIP API在Android和多次搜索,我发现SipDemo(中sample project的android-10).我只是在eclipse中导入项目.但是,当我在这个项目中寻找细节时Log.e(...),我发现在这一行之后SipManager manager总是null如此:manager = SipManager.newInstance(this);.因此,无论我向Sip提供商注册什么,我都无法让它发挥作用!任何人都有同样的问题?任何人都可以给我一个建议吗?
编辑:
如果我在这里使用 链接,我可以让我的模拟器工作register,call并receive打电话.但是,使用我的设备SamSung SII,它不起作用!! 这是因为我的设备或基本API有问题吗?!
在android中,我想shape在drawablefolder中定义一个文件myShape.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/white"/>
<corners android:radius="@dimen/corner"/>
<stroke
android:width="5dp"
android:color="@color/boder_endcall_color"/>
</shape>
Run Code Online (Sandbox Code Playgroud)
我想在中创建渐变边框<stroke />,但实际上我不知道如何!因此,任何人都可以举一个shape使用gradientin 进行颜色创建的示例stroke?谢谢!
编辑:我希望gradient颜色从#F85C5C(红色)到#F68282(红色)。
我有一些dependencies在每个新创建的项目中使用的(例如butterknife,support v4...)。有没有办法配置Android Studio为自动添加它,而不是每次创建新项目时都复制以下行?:
compile 'com.android.support:appcompat-v7:23.2.1'
Run Code Online (Sandbox Code Playgroud) 我的android应用程序中有一个函数:
public static <T> void saveLocalData(Context context, String key, Class<T> value) {
// Check type of value here
SharedPreferences prefs = context.getSharedPreferences(
Constants.PREFERENCES_KEY, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
if(value.isAssignableFrom(String.class)){
//Put value here
}
else if(value.isAssignableFrom(Boolean.class)){
//Put value here
}
editor.commit();
}
Run Code Online (Sandbox Code Playgroud)
我想在这个函数中检查值的类型(我想检查两种类型Boolean和String),但我不知道该怎么做!任何人都可以提出任何建议吗?谢谢!
编辑:谢谢大家的帮助!我还有一个问题是如何将其保存到Preferences?
RemoteConfig我面临着有条件的参数问题。大多数时候,我在第一个打开应用程序时获得默认值。之后,我得到其他条件值。我的条件是User in random percentile从0 -> 10, 10 -> 20, 20 -> 30,...., 90 -> 100. 我认为,它永远不应该是默认值(因为条件覆盖了 100% 的用户百分位)。之后我确实打电话fetchAndActive()了。任何想法?mFirebaseRemoteConfig.getString()task.isSuccessful()
可能重复:
for循环优化
在java中我有一段代码:
List e = {element1, element2, ...., elementn};
for(int i = 0; i < e.size(); i++){//Do something in here
};
Run Code Online (Sandbox Code Playgroud)
和另一个块:
List e = {element1, element2, ...., elementn};
int listSize = e.size();
for(int i = 0; i < listSize; i++){//Do something in here
};
Run Code Online (Sandbox Code Playgroud)
我认为第二个块更好,因为在第一个块中,如果i++,我们必须再计算e.size()一次以比较for循环中的条件.是对还是错?比较上面的两个块,写作的最佳做法是什么?为什么?解释清楚并亲自尝试这个循环
在C++中,我有类Base作为接口类和2类的继承:Base1和Base2从Base类是这样的:
class Base{
public:
virtual void printSomething() = 0;
// Some bla bla code...
};
class Base1 : public Base{
public:
Base1();
void printSomething();
};
class Base2 : public Base{
public:
Base2();
void printSomething();
};
Run Code Online (Sandbox Code Playgroud)
以正常方式,在我的main.cpp中,我必须包含以下代码:
Base *b;
string base_name = "Base1"; // or "Base2"
if(base_name.compare("Base1") == 0){
b = new Base1();
}else{
b = new Base2();
}
Run Code Online (Sandbox Code Playgroud)
所以,我想使用 Base *b = base_name()而不是if()else()上面的块.在c ++中,这是可能的,是吗?谢谢!
在C++中,我有一些头文件,例如:Base.h和一些使用的类Base.h:
//OtherBase1.h
#include "Base.h"
class OtherBase1{
// something goes here
};
//OtherBase2.h
#include "Base.h"
class OtherBase2{
// something goes here
};
Run Code Online (Sandbox Code Playgroud)
而且main.cpp,OtherBase由于重复的标题,我只能使用这两个类中的一个.如果我想要使用这两个类,OtherBase2.h我必须#include "OtherBase1.h"代替#include "Base.h".有时候,我只是想用OtherBase2.h而不是OtherBase1.h,所以我认为这是很奇怪的,包括OtherBase1.h在OtherBase2.h.我该怎么做才能避免这种情况以及包含头文件的最佳做法是什么?
android ×7
c++ ×2
java ×2
build.gradle ×1
c ×1
colors ×1
firebase ×1
generics ×1
header-files ×1
pjsip ×1
polymorphism ×1
shape ×1
sip ×1