我做了一个示例项目,将文件读入缓冲区.当我使用tellg()函数时,它给我一个比读取函数实际读取的值更大的值.我认为有一个错误.
这是我的代码:
编辑:
void read_file (const char* name, int *size , char*& buffer)
{
ifstream file;
file.open(name,ios::in|ios::binary);
*size = 0;
if (file.is_open())
{
// get length of file
file.seekg(0,std::ios_base::end);
int length = *size = file.tellg();
file.seekg(0,std::ios_base::beg);
// allocate buffer in size of file
buffer = new char[length];
// read
file.read(buffer,length);
cout << file.gcount() << endl;
}
file.close();
}
Run Code Online (Sandbox Code Playgroud)
主要:
void main()
{
int size = 0;
char* buffer = NULL;
read_file("File.txt",&size,buffer);
for (int i = 0; i < size; i++) …Run Code Online (Sandbox Code Playgroud) 我正在将我的应用程序定位到Android O.在我的应用程序中,我有一个作业服务,显示所有其他应用程序的窗口,因此当它触发时,即使屏幕关闭和解锁并打开它,也需要显示此窗口.我已经在preior Android版本中实现了这种行为,但是在Android O中它没有像我预期的那样工作.
我已经读过我需要使用该标志TYPE_APPLICATION_OVERLAY并<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>在清单文件中添加了权限.
所以它在屏幕打开时工作正常,但是当屏幕关闭时我注意到它没有打开屏幕,当我转动屏幕时,我看到窗口是在其他应用程序之上创建的.
所以我的问题是因为旗帜FLAG_TURN_SCREEN_ON并且FLAG_SHOW_WHEN_LOCKED在Android API 27中被弃用了,有什么替代方法呢?
这是我目前的代码:
private void showView()
{
if (!wakeLockAcquired)
{
wakeLock.acquire();
wakeLockAquired = true;
}
windowManager = (WindowManager)context.getSystemService(WINDOW_SERVICE);
final WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT, 0, 0,
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY
,
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON ,
PixelFormat.RGBA_8888);
RelativeLayout layout = buildView();
windowManager.addView(layout, layoutParams);
windowManager.updateViewLayout(layout, layoutParams);
}
Run Code Online (Sandbox Code Playgroud)
笔记:
是否有可能创建一个侦听器来从android中的whatsApp获取消息?
我的意思是你要broadcastReceiver在Android中收听传入短信...
该东西是否需要任何API,或者它是否合法或我需要获得任何许可whatsApp?
我有一个 Winforms 应用程序(跳棋游戏),它有一个本地数据库(使用 SQL Server Express)来保存注册玩家及其分数。
我正在尝试通过本教程为此应用程序创建一个安装程序
一切都很好,但是当我尝试添加播放器时,我收到一条 SQL 错误,指出未找到数据库。那么如何将本地数据库(.mdf文件)添加到安装程序中?
我正在使用MPICH2来实现"Odd-Even"排序.我做了实现但是当我随机化到每个进程的值时,相同的数字被随机化到所有进程.
这是每个进程的代码,每个进程随机化他的值.
int main(int argc,char *argv[])
{
int nameLen, numProcs, myID;
char processorName[MPI_MAX_PROCESSOR_NAME];
int myValue;
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&myID);
MPI_Comm_size(MPI_COMM_WORLD,&numProcs);
MPI_Get_processor_name(processorName,&nameLen);
MPI_Status status;
srand((unsigned)time(NULL));
myValue = rand()%30+1;
cout << "myID: " << myID << " value: " << myValue<<endl;
MPI_Finalize();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么每个过程都获得相同的价值?
编辑:谢谢你的答案:)
我换了线
srand((unsigned)time(NULL));
Run Code Online (Sandbox Code Playgroud)
至
srand((unsigned)time(NULL)+myID*numProcs + nameLen);
Run Code Online (Sandbox Code Playgroud)
它为每个进程提供不同的值:)
我有一项服务和 3 项活动。该服务在第一个活动中启动。现在,当我转到第二个活动并按下某个按钮时,我想向服务发送数据。
因此,在第二个活动中,在单击侦听器中,我执行了以下操作:
Intent service = new Intent(MyService.class.getName());
service.putExtra("dataToSend",data.toString());
startService(service);
Run Code Online (Sandbox Code Playgroud)
但是服务中的onStartCommand方法没有被调用..
此外,我想创建此服务以处理多个活动。我的意思是每个活动都能够向该服务发送数据并从中获取数据。
在android中,我想要一个限制为255字节的编辑文本,所以当用户试图超过这个限制时,它不会让他写.
我看到的所有过滤器都使用字符限制,即使在xml布局中也是如此.
那么如何设置过滤器到edittext以限制为255个字节?
在Android(目标25)中,我有一个后台服务,在onCreate函数中,我初始化了一个手机状态监听器.它适用于Nougat之前的Android版本,但在Nougat中它不起作用,即使权限被授予.
public class Service extends IntentService
{
class PhoneListener extends PhoneStateListener
{
String TAG = getClass().getName();
@Override
public void onCallStateChanged(int state, String incomingNumber)
{
super.onCallStateChanged(state, incomingNumber);
switch (state)
{
case TelephonyManager.CALL_STATE_IDLE:
Log.d(TAG,"IDLE" );
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
Log.d(TAG,"OFFHOOK");
break;
case TelephonyManager.CALL_STATE_RINGING:
Log.d(TAG,"RINGING");
break;
}
}
}
public Service ()
{
super("ChatService");
}
public Service(String name)
{
super(name);
}
@Override
public void onCreate()
{
super.onCreate();
TelephonyManager tm = (TelephonyManager)getApplicationContext().getSystemService(TELEPHONY_SERVICE);
PhoneListener listener = new PhoneListener();
tm.listen(listener,PhoneStateListener.LISTEN_CALL_STATE);
}
}
Run Code Online (Sandbox Code Playgroud)
我不知道是什么问题,看起来电话管理器没有注册,因此没有触发onCallStateChanged.我的猜测之一是在Android M上引入的Doze功能,但仍然......即使手机未找到"工作中",此代码在Android 6上运行正常
android telephonymanager android-doze android-7.0-nougat android-7.1-nougat
我有一个 Firebase 项目,在其中注册了多个应用程序。现在我想添加推送通知,并且我希望能够区分哪个应用程序应该被推送通知唤醒。
在 google-services.json 文件中,我看到所有应用程序的current keyinapi key部分具有相同的值,我理解这是因为我在同一个 Firebase 项目中注册了应用程序。
我还阅读了有关 SERVER_KEY 的信息,并看到有一个添加 SERVER KEY 的选项。我可以添加多个服务器密钥并在我的服务器中使用它们,以便发送正确应用程序的推送通知吗?
或者是否有任何其他解决方案允许我将应用程序注册在同一个 Firebase 项目中,但区分哪个应用程序应通过推送通知唤醒?
我正计划在Unity3D中开发一款游戏.我没有选择yed,如果它将是javascript,c#script或boo,作为统一IDE提供的开发语言.
在我的游戏中,我需要存储游戏状态:用户名,关卡,游戏移动,当前状态,点数以及应该保存的所有内容.我想让用户在某个特定的时间内保存游戏,并且假设在几个小时之后,当他想继续游戏时,他将能够从他停止的点开始加载游戏.
所以我知道也许我需要2个表,一个用于用户数据,另一个表用于每个游戏 - 保存游戏状态.
但我想知道是否有任何选项可以将本地数据库添加到Unity?
我看到这个教程描述了如何序列化对象以保存游戏状态..但我不知道这是否能满足我的游戏需求